JFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((" ,.Fh Ch@ 10D``DBB h4 @dX bD iD ІI$TBB'$"`I)Eb`(m9@0hb&!1114  b` Dh "lTH)TAiN  A" hf%n£!aY4hcC"5J2#Tզ@ #(a`QI+JHB8h@!!!hSMNhC4$11SB!`&2Dc(p*`"XE b!IJ&0C41 b `hL0JHLi1L -XX`ݚb% )*Cp& ! $40)!b䜢hC@D 6JJቨ4B!`b `0@ b`&ё^IÆ LO7dX h@)A "I`6H !L'@ DQ B!Bj4  L@ @hb&%$ D LQ~7ҜtZ&pӘ b `&)F؆` 7DBB&qI:LVF2B1 5iL4$ mj4 @ @ b`0b iS` 14V1l˦I7 @` L&ȒB[lC!FlIY +@!"!%$  HX J00CبDE18! L r2ϳ>Tس:=8Ӓb  & !`) "0$EMSIAL6D$B`&BBX&1C CT4h! @@4 0Yf |,tCE\T}nn` b$1AN&$ &IS`0118` 4  9_^8B14yꞿ3wlK 7 &@ 0@ @ `Ȓ b( +$2DR:]Z3cqcAȴNb11@#@18b`!upyt|z8lZ+]}3:zKcwA9SUU5AJ   2LUp*HR+EUEvF2qIW8)-JYDUQ  b `16!B& n$I9y~yntpX"QE,m[&C44 b ``@  BQ0&:Qud J7*"S-5(J7U@`  b1n.2/| ZrJY]3~ڕyצ1Ͳʬ3}[9NΨWVun}Tc~g6g=Mq6}GKsx b``L!nu"6ڬQ}_4 4IMtSҫ(610 b`],k4r:\_GOn骻q[,C*ͳԖzhUݐ9w L01 L& hQm(4d]nNiF wfG&ܱx*uθIbBʤSnܢaFj(@`8箄Ꝿ&IltgxgɻM%Mږ{z)]vSqUټ& b`0CT 8&`% '** -L/(4$cךRjp.h @1b!  0n7ʮB Kt}UF˞tr\7Jϖ~%Ҹ[!hUqp!&7Č1] *O4צN.Ǽt0!J%S101CC&1 Lh b bey ?fW7Ƨ,ʒ2t}֚m[PzvvF@ʀ  hb @%(#!!bBâM4BF=x Pցdd'YS̷ͬ 118h`bSv\>}Ux/ޝ7UI5h,pܞ^[U9=&v8@I!(XjaS,S3]av(KWP4j` -#ݒ7Jն&W"1t!^0 ! &X2y=yomNz.zVwfKݚж26ϗMa5L0C]q$8EQTl;yj]\U:znT62U f%uLb!  o7Q/{jyϣCJgS[oޮOO>_W6O~oC,2T`44\3zc(B A\cuݛU4컗AK2B6vǷ\n9WXQ,y:Bz` `4 @C&r_'RdxyNu <SQUM+#S⎬7v㦩K]Jy:KX5b`!!)*d 1RYn+έӚKUJX7U3˟EA}lŪe6@@  b b4x2\>|z^WvB{3^S׺Np^kέ㜅VզhW6rw{xz=)@h+ !daYZC.~mQniڲ7|0Qgj_J}l;8Po)Ά>4 @dtsNqОgͷ>ǻ \T`ыfNf7(pu9|]͙c{#(h1 @ @}6yn;*SHI*Bj"9̻&{y]4գ7>Wf~םZ0niMRsTH/NL` @ `/9ywVY-tkZJ~sGCz|z[cV-KX+csSTWu6kK2"2QiM b6y֝^]k׍ʻK=U**MVK2R.ZE9}v6{i1m]jZҌRUJ)De%dR*K~eS>-у$eͮsuκh%lGNl8#~:n5Yߎqf?L'@ @ojȲ*d.ܴn3q$ngլNKbS%{ߓ\qM(zOk=R͕zX_~=hE'J]\YA&]ƣLk4>5tdUFm8ʋ+7T+K-%3oU]kRKV=cNjkCiGY)s󝧂뫟CX=na\^ RgOA5F|-P_ew9jWM;暜Q}rUh;p_>|+ng<%̙uӧ>phss.SE67FH[W+8sc<=3Z_FJ^Mz('.Rǖ=<}<=hr7Z6v"pV-:jS٩}vf2UeYN\K JN*|y.!~O{ k#;1rt݃:>8sVL]*gs*-dY*Wdnb b&@?=1Ms*|ZW3VY.+ӋcSZg EWfgvZNDeSBWʋ$ӟLu?CԎvܚ/\hُR]zu3&UWZRvj^l[֢3u[ةZ2=Ox]wԥΛbyu͝p뚫3UsaVX;I>7~xgpa;_կM5yĔ1dD׳<K}*D&P&@18{N]n)E=Mg_811YGE) "J cMQ]e3>_Q=:f]IzTQS US-izΛ$Iv3Q]]JM$[VT *N5-eBHJO<侴euRVzseOv--m(JƬi`jKڹW+n}1Z^.sLyq9}4/sw@ZH!]M&y،l-nq沯Ets'mi9E: Q"Z 5ֽC^mkV[ʝ>]3n2,#\B `T(U6-N,gF~&[bB^w*<=UÎ+mBePW:IPڪ7䫲anm J0 Pg=iQpڎz\~-kRqXl9]O.w}Ku&kSuHS $BRee:̢r fnYmSE9Hr3PQuVE 6AM "vty|yU.Y!nm4kqB.N4UdF鶫,qLں[e ⒅kYknpwBϓU>^Ѳ+214E8,:"=YվٛG\N{UǭJ1؆( -Rd [ۏͣ1f^6%fF$sB̠YUӲs]0 &\Z\_dL)f{!f7}6_w5SYŵUUYe]=73uԌybv#3]ё+fXx?ί'jĪZ'KZCOmVg ٚ5![omjbїxue ؒuU̔g5ziW:7':]Uˎ:ur;ês솅Dq#$BGVQ}cWQd.ŋZ5yrhgg^1ʎxGo|u?=%[V63fH41ӿFBwwnlӯǵ*vp$FJdi::qӏ^|{sF5skb+b;+ɳǽy9mIAJ1ɚz9j]<+htU!lNZ`tafcʍ4⁳G/LJ|TZ5%TͲBLSd-.ط%ؓ5ˡæRdĉV bc@$::v֋oV\fwtr~.V:2.8n.YX͎hk1.Jvտ}ڸm볧-%\s^Lݾ}fƥ<;9 o-^,/B9T,ųXҬ o,4 hxiӛfR-zlFfR&oSG/G=fl"#o %$4W٫#1e;Y(62+W4:lt#:;1[G3YfzseN8dًI8Oy@ԉ``&!#8Hs3_OFRثRulvth;Ì:dl @TqVR* ˣnsuX4%y:f2h]KƣVi%:f'w?LkU?,iÑIg]B%6aUiUg&>zuƧM_5^^Z役:stNg\Y+6ٞEֹgZγV5vkD-d=y55(&: F%`Ȏ-@ 9}l|dNPGDWmp%܍=mbZFlӺ23jqъuپY|| FxiP+$'*싶M+oEșPBf x8O;)3:!319t5!K kϥ:o 鞖3;=QY٣ܘ0JCM`I5f|֭sb)[b6xe8Ne!Bq2c8&(Nv񺭁TmdB6AI"^OOA(D#4o,i󶞼 ^ϯɽEz{κչ  J2# J0lewn~̚!)N(џLbU9:x}qҲ6m~/LmҘ>F蛖޿q]V FbRF|qV]ب5ltO՜&e\u5N\&\تP ʕ^dKN}!F'3ԌIT-!Ќ\%||&zcy].:yٿ,n㨍vL1I"5I4ЇJ+y_4t[Aݦ>f:i2\2eP۱kqED1g۟NxǫOMJ4uH\EūB ]I!["IHl>GW t0peEN]2_g:nm#7S{qR7.ŲAVL,qhJ A$n,iօ7>]0g3MiKkK^#PJ8@LjVD,kU yz̪|NKυI@.v}5wy}~cLIWw!o )E(JT1RjґW{!#4}g(CD%bJ+WKO+ &3doFtr걤Zabb!ͫ7%ѯךU-Ăj*ÿУTҷ=|<=X[q6*iC"(d'"$- yyTnh-|z]fSn'dZ1Ky} />u_3\8 Nz8~GLP;iHvL@`SM"1`8x`q/mAI}E9qOןơ^r2U`JP,cBkW!$I)d+bܩir+уXJ-)~tc>&ĂVB-K_?z$. h0R)F@9"ʑe>\z\;5P:M9u9ɮsaOz{qҬsq6ȦN@gm ;\$8' #R#%M_28ІU[j,#"˟P=++| g!4n^䪶 i5P$ϮYCc`Wr^010#Њr3$H ۀ29# ?ӯ ,q=ی;G0O,, 4A@83s3o !<5-׼ 1?430D$a ;8cO4 ̲9G&o4 1ͫ?8<3w>9? 6 8E Ǡ~ߙs,< ,/1\O8<:Հn:,ӽDb.4'8+Jr<<9]+rˑ0 <8"CP/ < s c?2<O;x7}000 Á(N5M0ϯFo<Q!w0 # L4Ҏ +1`=LѨAuM 8 @h  Ϊg0[8d_o|n00 8 whhtS/-ŸsC8 0 07o8$ڍ"ʘq{ T2ѱa0sFsrљu[ ?Nz2"8fɒ{Oc1+3vzM|"D:I}KYaLω` 0 G+(+f?)ŖR+}0q@{1'7#:w4VO0 $βէFS4LBer JeN*/ =A1=$l\Ӯ@j.檄kz%eqe^PU콹4x=3` X?Rʺn.Z׍x)y"ř?21l6oW5O䐘eނ͠@{B2y^%kZ*ogxBVW`h9mh]zXX,нP,ۍ44&}=fJ4E6~JC 06}+n'Ui1᠗$ClLE՝)[T@Ub̶&R3[gXPB =J(B41|xs}Px蒲@[5"J۲syo#$;X#L z\,;tEfwҸ,=ěeӽ'O (7=u~*"x(Q$I0Nm5ͬz hEb0?%0+l2ͻXl RH#rA/TmXb̪?>޻|P:}f}Sb*QnW4{5\@9I{;MWjMxs1;1dY~>r[WRlW2 UսKzrIv6G'1gglOrm"(zLfo`Tx0fbhmNW= [c3 $'4jy32`$^vԩWW|[|{TFg4CPaڝ {X6]0[Ö4W`'LqϊJ.,3U[1[v Q!!FuZe$ eQw?ieg]TL-N @X-nqBٸGV'd H- 47O3y=Q ,swwF%"wXMhO{5! p:;K(o;1O6`.9I~hŶͱ]Yqưpmaƾk^'y; S!",`8t侑5qGZw)Ayw/<^?Oz1tӪ($S]n91#T2yJφ |R|3sJ(]U+G{a&Pd>i6ClR|2Ռ7Cgخurڛgs.3uo=p,!5bh-?KM)UzUk81ְ` ZIy6 qJN-ե5ymχ7cl,iX .CR oz⯫y/R褻kPp20%˄c`6HapC[q7C(Dz0DG ϴu{m[˯Ac" i;?vGms$יg,h?(sc}^?Z׼s8&IGhDm?Kosy[r)| Cq{د}4} /{ePE4]s։* -?ۉ붻]:+m'Wum}njj(l*J }mKVT~ 5o|YYLPK,"jC*6i<}}mg*ޏ<2cs|㐓bI/v}Hvw gM$YQm<}}}}ڡ, 5`na%mv}]}UhQۼu,0<2}5uSU[-3lMUQ }d[a-9qLԻƥŻIu<<}g}mD#͓[}3qԗq[\^|+ (ŵP }qqe5=߷ (Bt597=#a*8^ȁ 2y`Åqi}<887w]Գ=xQD\}Dr)XI 1ϻ( cK<u6YqJ|4tu<o0[$-| 4&'=M}R&ʨLs.Uij M\_҂B!wh,o3g]o4Q7u ?o.\o(iˣ&CpLTz7ʙqoyv1 ԄajAĕ]ȘYB1/&aжiv1$J]I1ڂ#y ہ+-AiVmmRYY̺}S*_އ #׭qrBv YR̿XB=kqYH8Dvq%=j1 PUjץ0,#>!Tף,8Ns|i,:$BWpہ0NNʼTrJkY?4@K_oYa @1沩(SgaA4Q6HwF!J`7pVhָe"֬jO>$,JdLTf9BV;(L\ h7 6: /[)+R1.?`2UM|r*Mѫ/-?H@l!M*"% d͖<HbģHo몯H^nTG[-9#%9I"9MԾtd%yhGN Z`˿LJܘ1 3Zޥ0ږ[z hfɎ$X览N7a./m ՖG]8_:)]`9xw(F.&n$6NJ?[^F GYdn΄΋9>z nf`~@lֽL&".qj'1q8hWݎ's@;B ;fdBy|q=S$`RD>]F ig ^%"MHt4SIK+fe Tnf/޳tdy%[1!Jdx'@^PMoxMS{TPfB|^*}'sUC-JA!AFx(i؟.C` \nx<졆|nxYPd(n`/fL#2t>#DũE^?кq OmNkoȚ6Y?7*&-BA0QRj`鋘LϡL61O{˗&T܊TΛ7 q5tfԯ09mKxt\6j0"4x/\ҙ UL}%jXƄ QYgк87d]G#aPJHrCN\xKg 3]Jy1`\` Ә![MͅX\ΖABn %̃rd@fL*tf]>]x*G~|ˀ`1|>;;_`GEqIؔ嚜 o3TrUsqǣĭ`FC1No}~`?52%f o5P  B楩I<$̙G.4v|ͬa,U+)7v1yP&_6WcBa1g$љWx5G!TxHRbL>}UȈ26KNV_OAk-eT~0 ""3›O1Pg(>L<^F,hF㘘ټËlauVGW5$Švչ6b.3N?/4Ow!~& <~0"1rvb Qf0U5Ax=Fo3S1z9f|1/&E(q3dq1&F #(Ua<DM@Af.gI똏fnD$;2?05(B A) >0Kp|~ED6EFZFv癩>Pڥ0 ӛf. Tk3mGVc0Qf;,ƥT`B"ߖ7*s iN*3("U FbqBbZ - ma_\X5 3.(drb;R`@58q@T&bfj\|{Tӹ$4AهB9itbĪہ̮D{ud\%jc5Ɍw,Le"m̠\xꙮkC ʔLD鷕x*D1(~?P& f&3Y1[c`J LzARspa\|t(TWJlKT"z 3 +ɨ80&]>Mg;0Ll&Ll61Z { MRSn(-=:fP& 8]!ryI'U,ynX\ n?sB9$̈́ u6`6/Y3Sd%1)w< 54QO8nYSMd&@k&<[DkcQ>&\ [%N:VA g08AyG淟R4qډswD:AOyDm<*\Mg3zA0c"țDɄf. ,jH#U6;U}1M 83y|kcBk889?Lچpd4L\W 2g&SLue~2-2!¦"Ӗ]:)&m;4bA?0k8d?)}AkV,&E(hڅ۸2S5Aq0F"UbYө䉗JF:6ry.6CMw> b&'5M{P|]T}8_3P,X Bc{A(7g9кӅr(55HDRiS~I:M_Ǐ  ZÕZ-k54ZV3Mg2/̹ڢiYԊD͐c]#6чu>Lv"pAFaJh]Q,MFfܢ&)>@CG(X%ߒhF(m.U?i.q.مw2c('kXIcbZkXD&#lGu g\)KlP#B`P[y}sR(UpAn%MW>fqԳM/|5FOm?ٷbx*ٚ-X9BP16ճ0ԲPP^cuyLF*e Ù­ -Ar8ybf&l$>!WQHQ.TIL ,?y"zmճ65Vq|L_"Sgϸ 72Ϸ#5Rܾb{["R>#9&e0Nf|6s5 ]?3:`"Γm@'gfLyybXq #=7VsE2%ĠG,y,n~"T~ _eXt^Q70ٝA7%ÑAf%3Vr(ij7@{_a_}od橶bdgGGɈlw˜' u.fYRh96i[9!>2p@*1&ELf`B~TM3F᱂\N`J AAH |e0sPJ|1>'L1L t nLQ cqsLUIQu4^a )u; о`vNbJP!1&Œ,.Rݳe(Gb}ޠ06mŒ`Q5ܙ#[`hP 6 cu 36`־& :3>SmxuxNMFdԐ9$G 4;++!>L(bdGRG pgʟ)3cܻ ~e3Hdiѷ)"T??ŋU"aENbw .SP@@_&l*1<8arcj/POܰ!48v ˊ|w3PrՄmCju594"~Q:LA[&-ϊc:f#YQ)="T{ajW><>D8[ǃz ExF6IOb"/"e֜965 &x&c̍h ~X9|K`01gm; 0md<Ӏ*3 >%]%Ӷ>4\AC85LY|@(vu{]:d5c::VzjzF]g.1dM3]bQn* "'6Vӯ28 e? Lu3IcaZ|T؉fm5:gyd9Rq:nǗ0:6ZvsB`G˘Lh8Oèf^Jk깠kMԸ~"nCop&. mS̹p{3b\ML;1|op܍l~_~&7<+\4g a+2 k_ߙ[ S7"ĚU@ѬGP&=7]=(!>cdːa,:~\r?i>ij28̵=<vm<)pc `1CهX õ{0t91 _`'cQf(\ehP" #YA>Q>yzS7Jy 1X Bp8s,v|G";_1+ks7#LZpڐ ?81|+fB\OB8<aMf*ȃϻo~5yֻ$ïb91LA1{xU5") E`+byg<\_lZ3aE c`;O0f,KNDd0XHN3tW3 OlHCaoUܒ&"Pه[2 FZW0'KWOt/ A δ 㹇E5L,JJ6DmZcdtRf w'1h_bc|ith\h/{XWfg`r#v=s<\ĻlkRkaٚţO:[鿿ogʡ<|h1TqNau3.,Y`c! Di3qۙaVh~ˆE<4бWf A{g2rL>8ljocMCAMO ';Q|Tv8&h5nqW IUdO\9P6y<fG&OT|8А&-22fp\tl~4zllCq] L9wB tiX\Fܠo~h?y/~AP*~ OãR(q` SfKN gfE]4hɈ6c Bkܮ3p=; DBAg0? =ˁS|Kt2ci4F3gJpee˪*~qwՐۏa4b1}S55 Cs EbE˸Q#4yCv{L^%XЈN6 ǭª&H*qsWv+gFuAƢy)MfhB2@PC '%}k"Lϑ9"z]BUΝ5@9&5';\>%H;u tۄ8V`zo3{@>'_l6dG+f:;A]BM;@D87"u@r2}t[ ¥4ll&>r!\O6&}n0!=`8'pftؾ=k1Yf(|uOrZn4(cuQɞ /L - T؊ۅ<ZEb*~&vߐ%+Fa*YSFM7/n&d5&i\>0@c"h#h n` `8 >=Ȍ(u`RǑ46`4{&R(H``7 abo"`ݻ5,('7j =5f\ '``g1|L˜"Vi[3HbT1g>`|č米?5_r~IjY 2p=kX0L4jLP-!Pr/gQm37}魻N}Ri`C4ŋ6,]R=ӷL#)(eF'%i&0L| 2UOULjliIP|b:}Bd_]vjvSCWe5$Q0>6!1A "0Q2@a#PqBR$%3?l/;?(g=T3iMm#D =>J~¿h,%_\rB>Q_qSMi3*:t(h{TR|aYR[oϧESFZ5`ܿ07a_8")&])5cbzԯF7KGz(JHP(F3X>?T6ʄJJޞJ dͰp&a)x]R~7NɘY18hHRĝL|2~#갢Sn<ً1ѓr]ٴq'>[\LoQ`צeBTf[ٌxmcgr`_ؾ!ݐ660-EQ  Ɂg@SC^&\z'Q8B= a?)?P:U?N@*>4}BrgX:;\N7jМ QK&ZNܯT6a6oa㸍練0d8E+`rVuhhhD3q=x멯oݙQfg<x?ӦÉV2?=`͟H$DXt`?TEeS'5g !{Aw~O2k'%8?6 1bmxls48>Hx55T[|G"0~{L`KPT4oU1c6|OF. >"De? FasQ^ʬrMne@3`d4tDDn8?2VC+VxHLeV748M* qU?M7& r g.Ѵ'o&\̀]` MqF*D,hA14l"\"@&T.f<r.2)&}0i#Qdƃ&nD3L@|@r"&#ɍs Eړ:cHfvd"G*fA\YB@S\X Fngt&,Yr*E!CDf mbiwd49Аc2uPr%&PCLlw\EP?1BSO(7#(☎B V0h@0SQrfn!kv?uw5LT!E "+2%}eAv`@Wc͒30+26Tc>fn<RT(9ֱO+n&W˦?UDZJAdQ`ZBAq0e*`"㈊Ld0X36fR@, #aJ?a 00GQ B% jfe WώE7iF ӏ(2}1:&e3A:%E]DPT A(DF=YTUm%d EPy<@ k mF^ft *Gs\DmšmAK列N2?gI8.0#%0 Fb. .f(FqV&P:vhtCwb-& ˇ#Lώ&#E!Rp'Og( xXX%,[V`Y LX!65mG],|Y*> i )4wdDs\f44M5Al|J8 f 3ןfyeSl"3]1X̸O+s"saWqR)yTccLCP, ;qh 4}y!IɴEv{9T2EXٚlG&@&W,j 3ǽ@j&zG&bLTno'cƘ<OLx=?(ؙȵʴRZ/R<֝Mq, nTյ$Yk] e`.u'V-w!h cOc4Y61&Rǁ1)4bG ,Cs 3'B@+1bg[Q4‰'˽&, o'"T5=`UvOj?BrC 8C XP ɤ:kȌMԻ1&ogG[@@aQp34_B QP_ hVbb C:c-h.!A ω 81J[ل'&)(ۣ,'X)\A 8D=Bo]7[{1QCP3&#Ez/gܻc~]q`QRf,eT ͤL=5#MC:.1\PT-8w Gan|c"%Y0LMٛ&L rsSd8u+W/Rè@E\\٦զ}1zQ,b~;"k6)F:YWc2TLnjb6ۓ9.><~1,NEn '74o_(*lD+u wӜٕDƼ@G3(e&lQзd@l. ȪjÓlUٔHn!:l"fL9v5hIu ǍL-o7:7EK.crmը௙ u3c]XGȘS2}#XZ?dO)f!ɐAbfG8T3OfpiNrfX)4cN2"F4!ʕL֠]ZŇLɷ%~e3܄E؈a/D>zzc=5V>L[i'b 'C>R#I( eR@9修euaFt`ŊSN]#bqk 3 j75lU*n}jOMWfUT0nf"!%zːc&gڥJ*i؜BV n|@7:0}bf\7M@9@gPМ`i 4j&p1m5?Qfk!ְcd luR>L'м̄&*}?툊怇J 0MfM) NՎs;)rlT=" (?9ɅZul@;%R&}: ^yVԛ# g-@@PRLg94^C>`&\.G7gйUL1 *: QDsAjqDl2-4u7Eox`܌c˼/*'fd*9㱆 D ;da:K2gbeh4{FҡgL |v3 }P ?tz`Ț&&o"{preLB$5fl L6وAn &3za)ϑŴ(ϩɄMQ\ޣ 3>=v~n ԐVPTWLĹnt̛3W=ØuqyYؿp}:O?g'ŷY(vf ,gQ9AL^?1!+n$֢&*`հ3$Ծ &5)\\@:&0E!iS3y7/URA<~"1e0YFNioIB;?Lpl=1V1w0`Nd`$C#O-ϙp!vkZ˹.fn|NɁOBdԽ(݇_-l3i0FԢ7+fLe9*D h;Ob`F1<"ڑح(E`Owֻc(VUlY{slc5UGESowѹ oy0Q{v剷 lsI6 FƖ8cimJIΓ 7TQsQ9F $h1"U/]Ps2+7s73YO|U|ΠS vcB=Tǘ>aۧjN3(côRƣ){Z;_@\P#؜gK=2͸1-qs:"1+*~`Ρ r"6b&mη$j 6>aTPŚ#1`R FD֔My$fI`ʻC3. >aӱ*1%g'i1lJfxjPðvېnk_%8 Q)RY4SLoɧ>lhđ&*&"ϑWj 8f_Xv3#B:;116&@caS0?`1sR37-b!q7Fa+4cE;S&Z3t;rq34)jQAJ!}c]@>`E3w]ҳ/8pÌe\I›, "1!cjTfb[if_i~ߨ4=ndY(L5cGQ ̣!5l=S2w,π-Fk6&wľ͆,UCJgP9cswbPݍ&ǰq0o*`C ȕ cF+/@B˩5fU #62‰(h۩2b`m4xm1V/lZo}VjiT/n 05w2Ʃ7b`<> 5٠%z"wv.n,LYWjfJ3wBm(w@\D|)d=Yqs?=f} s}&W4&Ĵ Cj}34s\m 0 &, &Lm3 % LTʶ.<x>FTLP"u-8 x (@QJy̨ʂT7?1}?n (6u^#>eh@Nnf*I<)aaԛ{}֊c]f{ UGT;,ͦʠyӌr1#nZE标80a+`DT\˘O(ٔa7`N[#6H#[YIU>'͙(M:.e/ONfRk޿> aٿ`G?~!^a£SP)cPD"l& 6ȇ)1t&zn|0dAc#'Calumb 4 ֩L=fݸ2oy.2I$\@=%?.$γc.U' &6yhc4~DžYz<fc@X~è81]K n DRk Ž &QbƣP pэZ:ljX3ʕ?ݎѲ(G` (z(PԅB~`kS6xM,bmwQ_ 6rMp{CdСG՝K cmؓG'ӲTnTM4k#Q{1O\GeN(QbsDO{h:Kihc'\?3(PBgmA)g 9aTq%#8N0m^T\cXQ%…^(/au9羳:o=3 =n-~Q~މs>0f' dΟ?n:cW=vKCiREd]|E9=(faݹ[9d* 8۳ݣeJ0}BKtLdIPGcGTıa+6M/" e'af[:^ 03~z?7*TqG Px{e`Q+yh'*94omJ(1W/Ɠ^+LJӓNJy-_$^kS h&fn!fusB'j9pV!8 0(蹦*9U4Xgc{ZUVӧw=Wf8TXңe\we7D ;>@SZ;VjgqHjP9 z#"bȯpcv)(et+w4gQ ,{ Ži$5EX:m/\ntXG\Frv~,Ԩp5! cL%O*Lx yŦqdGh 7cnSz L mgZl0G\dSݼ.UiVm FVcNH9dעlUe^,.I&Q&] mѝL/賀A5aS4s|CQqpoIH;|e_ -!Rb}/2tu #r@Uy6Tܻ0Phu]Ļٹ_@lrLдt#T1OS76~uwliΧ[L}LLiM9!7_O? IuZuNv,/!P25䷴CrwhcVI *U5ϢDiYLtaUvp}:'{?]fmst' LzMVrMMʮ0uFS naW7Ԃe Fk;B>Ƕ5D7w2&dK~ُƂڴ,;2Z{CX S5Mh?-$JfID£&x,-q#DQO2tj@GI @!Sv.2JvY*d &V`~#=27Z,TrdBCdFW K Tz;x5qTæʙ`;*kHQ&\JyݳKBt fL :|zt^c;`3 +ɀ-V;t)>au?7Xw`GRwAWHSnNeII*pU)ai0i8i9ͧPѥfcXUV6zy4Hg]NJ<-=֪xbS3fYOC. Py֩+kYZylg 9j:D3d\އoipwa6@nbq#\A}#R5Bl p2U]& %QΓ~3TLG]BbIU MӒcl*T&t9c=eC'~:;6x5@M4 [BnդM0I>򫅨VOt525j=wS1 0b L{mkEUm O *c T̸AiD? N;Ӛ`s^ǀ檓N|sPL:6HI?Eޙ'sf2M}'TjhhwL)? 煨 J Nu'䎉 ԅB4NU|)Tm<8B0k{2`i &KCe~Mޚx!%OA!Wk|!;T$S%L;kiTxG ײ4AL&ТJ.#4hmGhZ$4LtUeˡK*r{:s^D\TwPnQ[t\5ee=UG7˞je0GC,T8|P}(lsjhvwdOWgUtr;\DM)eEOHM >Rxs|BM:M}6aFbD eQ1[߽?P 9ke6N|hyD:9jpj6?ڎ-Kz*sDKay %^цAoyK)4nj]ˮ78uXjz5"汲!QQI=75iͳu}Ձ;V*}!TKC8nys]0etPmaS`CT*Tvb:ױ9*g<L0ʧU|!&eaL'϶DM$g53ZLk)#-S'wDcwE{0G;Ii#6?CrnC +Ϟp$puC=2oY4t 4FC9/Q:~'ET\t?T󯺰u8{C3B+'^XdamZZM<:}imް׎D+rKanUi*e"ςZs2潤CsS]sNRζqFHh4asۍaxJG9 ̕"ks7u)ѽLOE>>.suU?&hTUy}T!@& ?%̣| K]yoU#p#ZUDdNl9!R hNNg0[[o&O@p/ݯC3ȦRf+9إM)džA:J7@ˌqOK y]^3cNDѠqkXX~Z*AW,&קk*qglamFtqJ-'B|m>hwk!6!S)yBcW NmUZUIˈ.Ϫj܌~vFG$Ba;fVm:k x]^GN 1t /Tۓ@h+¼rW2gOݗ.Jxl"y%MzE1[uy,s-p,MTo8xʯ k $1Y:ȉ&̨;ÃVߧi dˠ "9BOȧ訸; i]c-{p ԉZ°1gif2nv2ZCW5[Pup|i ԜRʨX}I4w@Mny'K):\全9O%KxA Fn_٪*&i {%.*È*m &gR$Le" .$8OTT\*H:~F_ 5BF1ͱNrk Und*.|sޓ=Ld*6x2 v@)I/S5=%_ACFTثZ.xÒכxfd']%J܈#Ul4:({.|uꦵ'j{a~0r9#U4!apAd@ȣ190&hM_Ē)UUmsM%d 3o8ɵ=k:T*qLwu]h]chʓK9:_ө41{y.n|-@Wgl(:\D4cm:d Ow<_T8biS{d.ڃ(!UߴUMo7LԨ}mp:O: ^5*|MSK~`zSm\T ]& Mq+HTK YQR`s3΋ "'NߚܷunKv2/o㖍`vl&iA:VmE,9zg`̞>G^IwyTШzOM%4&@*O4; ˾*=}Bk?BaoA6 Csns M`Yy,"=S3{qn*'ڵrrՊ||LUHnJC) ve1/-ѣ@U[Uȵb*omx`n.Ӵ>*SLUZ *Ea6L\UR\w{g6Dhk[g)LdeW02BV5U6U,— cG `LOU8}~ K op|4q9(\~_=m7CdxH9eMl*ᕉ1Թa2D(܏TaBTUՄf EPC ?Obu'5Hk8G$y*cCrՅrM9Nyk>GTXdnoh4Xj;]9#YM­2ڲ3*joEARzeh@rküOWwZoU^69)'Xی;kߒcN ]< s'{lp Vi3R[ T`LE^ GS: P L}} (႘Ӫ}AlwEZzev#޳)Ȯq}C{bSֻ;IT}6s]:y)\ֻ{`L;%{zFKO}Uv-oHhQ2һK Y~LeڻPrDMwbby'rcTL$Z\2ǸT+*8Qt8]R)cAsdxDz6CDagXܩvk̦uQsdPqa|2ۏ`V w u6Fzho]m&wtX|>!<]Q1Z\ӡ݀ aȄ[qasUM>XrN ~LJ 0H}&ɨj=ʿı ^_> us{39+Z~%iv#03uO_תUeq| f}eR:,E ۗ.{`U\@ dgM04c6cj R3Xl@{n5X1-fࠉïNg~~wsDR:(rJ"\yŻ_o=ʼnZ*ѻ.4a*1uaouُ$I,)c[F@^ TGR&Mbnc\wMw*vVS6yL8džjvU ԅ@Mvy{D3=rYSkC@V@3QbP!q|Vڎ#Pf2{F2}!pT{M7T{F\L_0[5ZtTgi]97Y.ըfJf,s'D:6Yt}U4q-4cB>+ cmƲpvmh:ZGf32'k#o<'' _Bcd'CM#fp5k,;OV=G3Muj\eԕA-e1 ʬ4l9l)hÏUITk- y޻PŹ}ڸ50yQ'U2O@!T<SF6/H z7?XN3 BS)0-9s!SiTUw.HҚL~)\eT{Fly*.,Qp:gy. h-O`]}1ZPkP t:rXϧ^⏉8CM2c-&,y9MvXމCp8fmJuY,tHS]k:&x`!ۊ`r)lKS».R~~J9iuuވK{лO]W ?"Nh(uBJm췍܀sToKM.Cyho6{`CCvYpv9be0U??D *X~ӡ_4T'"ԤX㪥JjtđIu)w犏aT @{6X|Ml.rGf!V3+UȔ %Z|Ujze0ֹ^1OT>0 %2HX'vN+Ҝ!7'hp8+v.,R=Qѻjxѧ'dMH?HnX\=3AuĻ>^G_m 8\K@XAAk" +YsUt5vi?cLhI_5 <)JC /Ak\6,0;&)s h&q9SKU@^5_,ͱ$&nȷOݷڧ 7u^G89y m _,Rg/pjǘҫu0\?J]#\w"b=G%γX7l8a-[QU}r=B$h MUJLƦGS3@*\"B4E /VnͩNw,**Z[V.p9gpXgյ̧kc)ou7Bh 5U@FJ&,~t7)%37 S@sns)YMtn w4'xisWXa>o%kV}G'TU0vg J~lp*D$&vgkTwU%Yi^!b\xF+' ! 3\:G5iDWhGO*iЫwMwD|qvc*5C-aDjp^k V5 (7kKi7ywYoTʨ,B9rriL]60QR *`mVaY.e1R뾩Yn5c/k{xuﵤhCFjپ冤Vh zPab4^eRbgB 4]+_񓪜SC9[QG:Q`Y+Qw̬ v@ R,^,. 짖W _yDu๲-b>.$ )'}^'. {jWR9hb(6IVh ӬxI6Z1U Nm.ޣ4E@f>Ues-)*3 u=UJna 8:~K M-ܰm̧wd+I*imw Ri&Uh>VysnԳ>"2yNv%Pb:T.a5T=\S({*G^EhZ>G5هع өrU 4XC_Ul8 o5 Vو|uDasuDO%-0n5XgUpK+#2UiR6N 3G uBײa5u9gIN+*7O$H0Tn{qla_4O@RÅkXItEGqpyjihOͭ'>IUQu6,vg)Qc~ùh=Ή*}Wq ~ձ|UEYTqW.-y&Sxl_%in&v_y{oTG#%xy,E==ځ}C -oRHxuk L%昦A(qf|N7%Li-+ j#柕O4a_n!'(o9wK{ UOV絽:wbsAbUq5˟$r uL '*75n MB- /u:܈Xj&QNMyNH0TOUJ U0u[$o__ 9hqftY'J8; ?A2F2\dYtWh^ke*ƅp^j +|+Z>DmH B]Ty,#<=s ֛MٔZHsPF\8TiK˹NӅ:h(H\Jc&tJ}jnlo}CI!::<5\wBQK"3Qp51:eZ=Ät*# [)ܺ֙Jߴ?6hӒTkZ*zu|8GSktN|62f'3FOڵҝSH0ZKnj=ڰr֕!U|`1è?-ph >Jr: ~M`ۼwC%(Nn{ h ht]\0tL|~Knhø.q7D G  jANt#EO.`89跜1isCUkATiSkq#O^L@y2E x',(3 JpM9,Q蟲aC1L dWg{x|;vbkd杈uVaT׫knK ˭h,q&VEPf3RygbP2rjS]G>I"AG&$.ϧ$Yk/r{s4ւO c&5 h[(u!7x*5&89?>wu$2CR5F_[>u*=QΥiH=f.4l@-}#54@ ΉO0 l2?ҝ#0iO̩>. L ~X[`L_iAAx[XbuY8GЪT&gp9X٦:&yh 5%pRG%8&jS&LTXvjyn`{<5x4Â\9kچ4Laa^֜X.M4íf%;`G2~s ƛ;aRWm7 y"b0,hSmggԬ\>X:~kVGftRGyoᕼc|װezER4GUFPě.WX he< Z>NO85L5Uꖵx9amٻE$9 PH7~JmLtJӣZUS*FEauV.9+hȧze&73#^yg 4ˮh"7k {af ?ȉ[tZ<-XTʹ q,YXurr=L#iӺj~fL--jkRDwGkRѧUFe+w/E+ O_ XXQ|韆Dh Uw S=2 X[IRL1a.V"lxXZFWQZ] Ht9:uGV5U1oJ0Ktb:2~v:ջ6;Իv4O5 pfts\78S)fD+y놚A' (դ$2YC*9Tu*bXG \/<P hWejgiemmf<5@u 2Uud4i# dm;03 y/SA@L1-Uh0sGDse:CYV͵̭p;Rqꁹ->#Ś)wn(X!^UfL.ȧxx*7Cx,%?*|T Ҥ zͻFJM5?򫦣ˀp>{aЅyzMZbmn4 QʂZV; pKNTr@*bJgFDd7Soxuf>eb 9`\ZM;; 1.NCCs>KXiLW=G1g-q Ku[<|a'U9fF){DU*ݝg+HeJdazDiZu1P /GCD=ե{G%"oCJm*!B."J D>J"ᜅO8ےy͟{@~C R\rS=!0ѧK#yT!(tE"hF$y J.*X\1{ySjATZAy*7,I-p/ ȱkH^U 0<5?6g.7,'{]?!°檃!c/uLko#]"3թSi{8F)u6{QRrjh^e`mQ.k nBZ.Сu wcoVm4+ԫj}793 wz|,;3!'a\4+}X OC:V: v&ʐܚj2$ƫ 75Nmi"K}eLC |fD?LZ DHQ-YLA t2tj81br`yp٢d*9pNLɎmAeUUmFSk9D,Vm+vMN +߽hsC~jMu f^7%xSkO|K`&[%G 25 pH*:xOUP 2ElЎרּ`AzAne%By&O2N~JfsЧ*urJk*}"O>ES9,8;zhUs-$Z*\ ᒢw"3Nmi.D[*jUBրT8wM#Q‹]}HzK]rWf^v4:j[}\5ge7M; ʁN\f2|YaZLĪJ5y$E9 a);҅[kKwFs|tXO>"%od.wXi TV+Y= YI瓳w*.اR=5V u DHIMl&G޽s3~S XpZ,N3.+NCϢ6)TkUCK/y[~ɞhb*Y!֓:}\;OTЈUܟe?Hȷ3AS0 OHd8c^e/+zK]N*0}BDDfh ҷ7u0Ч!5i9gT}hUˋTeg)T?#x,h$xD4MHj]hBT M~ z7Jm':[96K ;o-Ӝa-)BfM'5W(;iWR4*Zs\YեUeGR9*g!y5DqNx}{MZS{IM7G$Ԟ8Vlߛ5V#JSPĿLp22X?mLx7fsM&%vJMߝVq3&"u+i<\$'^cg-@緸<x[:5 i>iЧa̔Ǵ) ei.:+U:cȦ֋DѪh>iL}8N}\ BVΑ$!s44^hwW>:xpY[gPp:*ױ||y[we4d4ٜ±sM9@Jz$cPee>nMSԂn\Lڊ/S57ky-s ADn 57}`.7-J^x)eArW,۫mVHUi,EKDTWf;ܘ@b< @ve`m';Xu:02޷{[PTe@$$4[jqGhy'g@QRx,> O&BgdӦ$U,)؆9 f(*f?־\ڔTMʡZ|0V0]:A5 ǻNjnaSΙi'h26Vo5I3dpH' 쎬*K^ZǫM!6e 2FɏU(Xch'-e`0SшżDesFt \52䫋*} >)o\Wm)0ŷyD41akUK'MVّs'!S\tE[F\&b2Lg iJ{p橐Y颖FSFDt 0N!>yPi) j0P (TELW%  OB{u<0oJ״Nf+#%a⒨Pm4¹M0aC۟А_wUUgaw, 4wE q g$BV;eӪҗi晢J*)t'876x`8uL1˄B$nOC^ Ѱ` ^5.)o/erlRۏtn3oBegTc̷{1ZdWg*WԈ FTo?!Ҭ]0px*,j2SCT+E0%9‡bwaSӼCrsm0sG<UҘB9ܴ6ho!&!UC/e[=*UamVEa`p۷zEIM֞+TtpX8yLaJQr]\OT0 peCDw-k{߂Ԇ* fn0حŶePi{h9L&؀ByVSlpJq98[19*!Uwӵf,R mv3 AY -%i)UTCa4dcc{ydZ8\UnU>O9?v7k!kw]!aiT{ƖP[K|]TYXxzsLT2=.e=Z\;v9 Oc]rW^ ΩR;PLIsX^*-k2Ui1%R@˪uWI]PڦRH'1>OӚCȏ /rQq,cSjwIғbpQ$[O9se; ӣ[ao^hP%Fj'?%/|*FnwWt=>LZ(妨TyVLNl>.ᕏ;CMZTAkcf]QQn傘3 ohdKO|rXJ]Iܴ 8Z+\Vl/a, ³bIWɐ\3GhEmrU|DuԢiRBmUtmrjԫW1H](˻q.s_{ɓ0u4Tj?OfA:a&_&\<=Pi0{5*Lx^4oq: xUuwM@I\Fқ1iz%Ps olUsbӏSM9AT/ʂq%RDStt鳆 ]} }ZdIaM"JaW`gtF3$Ð9x+̆Ɠ@ˉJp,6Qu>]Sh#Lp  UTS#7yP&zǗX9.VsG4LTmHnAE0HP̭knp6p*w901qE5Bvlvj3Q2\z8L!'9+F߳ly'CQwݪ'޺X;iOS\l v-Yn!uXhiϚb|d%bu'2x&ccyJ-aOjwU ;)9BJ*fLseP4fn/U-dG ƈlysR_=*¹5o$8jT#^J{x5CڲJ *MDD:SD+Sp W{U3s'䯜<x!59[7ИCEVRᓪ[ӢX3> 9o)/]/" M`qچqopS\hQwo,Ȫnm~JSdnNtHY57_|Sʬ{rΪH1$+ʛYCFaSi/rMw77NeuFF\uR 1QO-9!9ʧLn'5S: uTE&G&T%ZR9yu'HPiקCZC ȂE;6-_s-ks `Q)6!KZ\yM8-b 4fߺw,Zv؍&Gka WFBteb[Ҍ@sXb7`~(" qqOڌ{@sWw=[k XSsia^O-7:}REĽ%֋bMXGT N\wqf_lh ~zdW 35cNH^- m~^J%Li U*=h*99 dNי m'4 =^ . gU,})H-2=\qvQBiܲ-TNSk槌5jA`v] ƔSl\nƗD Dp˞cU:&Gsfc0ċ[2+[ leUstO0+Mw,M9җOY~Ik,|k UAg*ė.W,M  ]jaҜrȭNU= W$2FP8H,8L;J" M~92~RhoO"2P a0Y!b ơӉt*FNe[48Sʁ#00!„uN!B%JjNS` fm<[L X]u6=murq ) HCŒuV?wݴz*2tM*Tis=ѥ1HSܖDo(yOsH*o1O(CLӜ-v{ˍ̢skU:z+`G$O g/?Z5Maf^0o v̑™d1Ls I|,[%ZrWDJ*خ.>ISME6sT%V͍ UIU5c龠]nssa eisne9w'D 璥y!N;NkF\]uE"lY%1!;@Fn赘9jNV$"5:c)d+FY&gT~#%Vg+[ {<ˉ4JB6ۡe0 #67'i"sa$oz-vy8ndYRyT4 ?ֹ/oSV>U8e &2s޷-p,NAnV ՍCy2skþisx ϼSZ2o S\`<t9"I俁Nvd֟MJFن>*R Sj Zŧz@]Y^wPYZO9ALr~MYsT(Ѷe5. X~*8+-CSih]#H,*=֪n-R4PsGBTE=i'(Md2Sv:mҟ{@DCT`ys*d3*38JwB9'l/v* WpƥS~jwCvVzQEPlrofyFI5<&Qu٫S\Ot#j"'gJZfUzuTkK}+_^ jnq7wS:bGIW&O%yuBC( ؎!U(L vRӞQSgRK%We4ܮlQ'V3r` M,SN5`^ MpR'`*TJ\RXzTMVΪ-<{ȈJim뾉棄{f曊#\kǂJ%BoEwR匩;Uk|r@iV ''Z-'#0eIg;U'dNÇ!hPUFj])Nb&TOlL> V]᧽,8mVĹT8+XִHh:'2m uAµRT*WRz&419tKP8dUVXF7yhGvy/]R(aB eU"ntLl:k}a4Ʃ97~ =IWtF\NM+To$é7@T$ocZ eW]Nn5淘iXBo&HE{JJEك\i,>6uH) ND&} r^S_&*Gk訷wE,gz 7xEu "M*Y OIr*`yU5r^TAQP*+Xp 몴oBuѣOMU570莫z,嘒\5 _CA8g$3PcJ!90V"s`}|2M[f p9YUpYF\Z/ԫ{9J;UYCZ9v7gOk9ͤ*oI̪o:j}1u^L]MډT=}ٜh~r͒ʬUJu@2{MIw sn*,IW0vxO+HtUM:cD2s䍆hr4ө5\"~ix鰦SW!9R)ٷg&)T{LL*$#;lz|Ka{KQ{Y=Rxie}Bc n2X иsrVku1~j)\w! 8rꯦ3sHTa>IvF״r5wODi <&4 S[̑MBtԩb+:QȕBduqU ^o//lt+zL;,ް=NY"%E)FHx&rN 2U M-m2fJLBf LtswŎ ijUo;MÒ0zQĨ;;D^rr_(duty-}Ӓjb~ٽZfa uE2=9F>J/en|?p$Z69;ܿ5%O}Jgx9qpRz]a>jCi>ͪKG;+°&ꆫZQ@dUVdi)Akp{ ENо.l`)W) %hMb~ xvU٧~k E$^NlIth1NkɸTs6RՍD4*nžpN&DHPEc*7xE1D(vFS*Ԩ[żAAJO)>2d?OOvz6~jj2Y rw\RG{!ba-=OagQy"XSs#+v?6rN ouT5c4V7*'s)ﵤԞM9s0uIR$~0LFY}U;iGXU:#2:"DTd*dR{8\Ce \Z b~yަ~mGxћ] ufb}nG%@ BNNl#]5S+D禊Ri><>f\^zrMhh:(VR$ǂ'6jaVUDGUwltU;E7x-6E4Vtk#6SHjR.DgR}:&Ϣ;Ng%15n7\(maiញԞM@t7{ \;C^HB2kS97 fBe+5G2WխRi.{Qh=G0 ,‘vAN$:W35W7U#z쪔Lw__:d*] O%~Sp5^[bhlQs2/)z;5iBq.Ъ}Xݐ7؆7VT, Io8}GnTZ> hXpXv统2TF4hiS{-tX|S4ƆC%jЂ湠>J@@X;6 _4>US6YFY咎0Sja$O##$ /4W4\Nj)r@N e8l+Mkipo~d'5{ajw^9m&M♘3bknYN/x,FWv޺WeaSRc0%7uXLs[L%f|4!n)wFeTQֶe'G u(ӧ<ƪu3LjKIbZp 0oi>ebnT(!4 U*m8 K2Dv%:Xz6.rprn'z.h-JɍXی9> LZ%awj# m26l'DFK٢Uz4m> Ana ھ|+轌&g.i'[ ^Is# LjeW3B&Ys'ՍO N i-2GEA tR⃏vSpd+<G=CSi6*r]6V|%Xs)-M7`l] a&e;CkOC#AYiXk 89љ j NB;=.yTR,7{\rv(U#019?-$NS0=ػ{f::AkI 0|D61.:}3rM|D˺ǒrBU|"}DڜUZ+u3+w=C -Dvnlޙ*e$4ݪ4(lg,NY >8y.-mrjpvbvJC$*gCaC(Or2`Ach&.U{xf6X;a,Bu?X7$O8Uq>ʙ u`Ԯs .7. $stnvpgM<􅀾7{+}]֗d2uh_Vv%E&Lu32lXaMsT7o{IwlߖʂXSgx0Ϻ83PܜUkR~G J\iʣ"|s>AT3=>JȊtۉ [FϚ̔GM}(rA \sC]-eaj8Sk^-QB%5 fsu%]"NjRITxl9,}FcWg׃roŰ_.iuNU{&-N?못OF3F&i4UټMdHtU sȬ%}rjmQ%B*(PBjjZVHżOD:W8s{Wd2EUnL)%6Ub,Y==9'ɐtld\!P֖˓qL!hAdN nmV2= ִ 3 Vnג Dq#T{aꂵ BÚ3eSWxM祖תv 3d-B. Xa;CmXSaUa*yM I=Zݮns|FjDfs@?UfYP^mSLU;mpӲ %5?Ui!a9Z׺ R֑~G)X"ThwsR=Ld7K@]a:g%b(U^915 A'xm$|kZ^i } sN{r懚U reZd4 tZl(hOU0O"4Ҫwµ̔@s|Tҏ{: koV!3r&ZnU}Wd}u.qz#Q !4!s@~~UЧv}Ou#;_"֛ޑ桽Uܙ|kN¯sT #Ԉ]J%=vTe S&9f,Pky1Z r6$?6)%Fi=Rw& L1؆C'4.h0>h_dSB&sxjNܼhahC[5T\Cs|M'-|wfL/7UPjI?W4*HwQĵǝ:UZoHt41 } wB%ak4`v T4f9ʕa9}wBZ2V:$5EbL>tO>˧jkʕAQw?%<_3"LB=#Ȧ,{f]$;kxО\:Cs#=`?]NkHeyhi҃2VB r\i<7FIĺteZhRXU.ͱ)aMa=&ӱ^շ=ӏZJqZWx&TU4DTЪjMKWiWsD(ŚIUAȝ=L..cs/Ɨ݀g'e&:>9oX4.n;pcSt-DHF[7 VW\Z4^X& m h@JWS(_4{6%bnCÚzrXVRa{X*"X=1 d^2(ves̯֗&}j=א⪁.>U80IgHT]}6A٠Z e;ӕZE:O8TϮ;FliCϼZgW mrźOS-ہn碝]TyܧLWqƆ3h>j/ 'bg,=[LǠޛBz)D<5G0}j̀B{H>\JjQUhTTi~ .mQ]u<7;Oo3)w\-FJ g`ZoD)x)9#s.i$w^a9X߆oHj6v\:Ueg7LFp/n\6g}jRCi#ԕ x,3s(ViNf*Ҡ*E혒R%FkLֹn nR):]ҪDCQM-yJ!qCp#CITm[!ScZchvjv75O;WeN|әMIn'{jpdHdQ.YAavlz Wn:'8#>ΛUJ֍tySCfnW6T#)we@(-i@V_ ?6P7 | ķyftx {FJv,sbp? #.5 R/5%4Gf8wBKxMzmNצT.oߪkq M8OZ_)~OK?/~[R⭯_U?]OS<U[E7˹t*r }\= xk+Ѷd VNhZNIxfۂk- sc< jՇKG4h:Tzʺ]tD>aO5lMk/!T3ƎMD0uw5ID*uYXCr(3iSwy9pQ_JNFEnb&2u]>jKFlgihEcYלx.h=Pc]*uNWJH+{L9/9*X~j`溵7̥N:vs)4O3_ُ5]ի'+O%rQLsWeL9'"B| 4 jA @6y*[ʏ n+qWe)c\k9gaSAѸj` <̗@3UO<; N qDCG4uz5/ShQPTSOQL`J>HY:\VEd tVΪ DL(CvMkG=Sapzc C mV6&zKsMt8N})i§!P:sDv^V'kwZgMT}'3HJ7QnP" zJTY2O%Ul @ ,c:mZT fB##`ZuPŴQt0BR:Xw @,fQć8>< f"Y49&fgeU~5^]:e`7':u,S\Y[1ⷕ(5j? |G#.|gzefx8ukB?i|X:#A([:FY;1 j-ϒ,{-O'-P3£e'Q06-ZG%IkTꝘ[[S[w3fٵ)B jhh@#cJM*T䝢MJi~i |3& תcZ4().ˬ*iS>P4ʡ2<¤׹+| .m@AM2ܑ;2Pa -Lw.+0!krK[iڴd}L vТgEKMU vasyƂ:ibiu\C1qUjƊW8{IO ݖQµ=:/@:Eu'f#U DʬᄤrzØ_uW[!zUPQ2m%vχ[cZτB2[ݟig4l[MZ [Fgލ ˸Jϓ^#{?U$1RŗU+L E%4{QŞuV=h{E5 EBSD>aǪ:.ĶTve4vB湁j4RUèR:UxWh>^4k @<9JFD#/0 rThv@)Z<iDɘPB2nav=3z_U|0U.l6Mit}5yoT;2?D;63{;ٍX:Peʥ0Z֋O*0>;]Й__CtE>s`\@N*q2F6hJK ^\ײ59(kNcz*"sr~ Ɩ "Tq[>}"|!n? ^Z]2|jW^+FJ(^ժߺj|@~[Y nqG^_ .+?g:Q؃zwRvD3qP~mLj+UDi4ieg:ފ"ȡ =QԔ@lm0S"v#Ѩ]Tc G*g'?S5s,4 C pOuMaΌ;\c]6MNwBJզXNuЅu,{90@>6㩕O Q[aT ->K?(#jM+z}nޡNm-<|dJ)^2\uL'*:Ҏ)ky(wTtxX_ItOJ8*cʂu+N-{rPA6i $CBn`p2U,F\\^2sAŎu>aqշ8wxTj ԘVsYEvM[t(EQ71Qy-E^S02Oe}ۺ5k=l%3ۢk5脑Fa= qtQ&;HC~%wGl>Hf5*3n~'r#[S#p02ۊl{@'(!f:#gʔwBO0SXV[fRZ%> L;NSfZW~ZJq4pqO5Zl+ Zk:m#qʻJ9BsI1FX snXogU!JvA(ӞIB+w6=T:XG=y\; R(s1f<=2@Ts](/P 6l;P5rR,LYV״ N4[4tN:X29UUN.}E,7>V1f%We,óy^:'CD a9>IτriK HFYl-uԴǩ 6J' Mͣc!=[̑Aˎy,vy#vR$Ss^L(ex{>6TSo)nYڭvu <[ .K~uG[y4%Ti܋2VG S堟 MG{sx;Y+kD OԢ2)ۄxڏQ.UZg,1('8eVX`KNzme[gS3MWyPUKtWgϥJ~ 17T^`d 'xRbI(=:nrpmo/Wdjk 7ef՝S]|DmV4R O4V)T/K9B5hѩikgO5%Nxy]Xcc*K4E܁i"-/$7lȢ@Q(#]|zq,daQ]Zg&ʻƏNXmPzT Q\HBm>(*7_, niGTiyx#De@MdO܁sO"@UO n#YAVoS^oǺy=dmi=q;SLWhewO|dn7mi*$ !5vJ^OiVh> lfuLIkD\xZ#6Hٸiin B^:L8OĆtFѭMq23T+==Jcԩ[ﻗU|p^J޿L/ɡ2{xA{gf@EG0\>9a˪K:Y#FӔs+-kE>\â8rz#D̦Sr\6́Xwq H-czϨTi>Jn\*j%sTܱ}E>J!Jķgc4Rö=IOe\JOY *?YXe?Sm ŸQ#O8o uHBwOG;=p SE6ZV'Z7ڿ̫r[*frD5+:ֹ*6l:x'9O;yu ?VUJUjS1nV5۷wg?lj0NDѬ#pU=Gj٨FBZrMAuC4Ji$D\Ni}z-T65ZV2*2+a麩68QiVgQ>"sRk"AL&*Ew֤s@:V xF$3 lA. hԮѪk /SMJG)O3(z)_$S7JJvO%g\@lڻLN}oq޳z}~~TfSNKS8"&ssP`cIB\G23Nhx!E[ta ,~6ia֕ڮ`jğl=iPlt~OɅ)J gfkS䫙x~}'dZ ݵnPbwڬKNGW0Sƒp,5Kvb^@BgogvӓSmw5jZUxty*bicXV_SCZ^~kxOwz%ժa&qmG谴i vchS mJv> -Leτlے_iĠe:簎FY N~W1q2VWa^#I޷?'o=m]vdB#ll$aooX'=<^ݟ߳ǧ/Oُ,jL=[ڟ)TK/\Q=/M]9 'UN&閫g JۿمʋUTuW0拭nj~A>V>ϟT)%4jUnr@,q2LftB 2d45'SkA5:ըiG)P>^)nwU  >4r $ ٔYk {Y8 sd7.J؟5E ]z#P8z!fT _4l)ԣj+jVJNBJrMRRj:tg/#%%wTP*V$P੘jWsF[v*3Uqg5T2ghpp*t5 WFU].m60]9O%ӻ8&sXvW8eĪ6ʎoC4V AD%T' ȢP7.kPw6Wl ܲV({a䩙` gَ~y>K5_F}@'ŧ}Kyo-?]OG'/Ysf>c|eLϑ> !7~  q脲\isSu> 0_B}E.[9gD.)Á̎$KLiR۞qJd^hV'*o$2%`"S Vj:ݍQCdeqdV;5jX[oSs΍`_Gn7hG캎s 7FĈapwL6AiT3!xI˒kČh OǾ|SqfPs DӁb!kD<q4؉k>W"F7_tQ0Q i꣢ᖪG"@o!o|ܚ#5],"Lpea>zɥj|ef4֎gԍ(F']MOoK]d inmȐ &юMyq@Ore_P, wzY&NtOUjS(CC"ouF\ Ag?(>4V z"SG4LS fs觢>/V%ًXnN+ RkT!W͖Q1]>O F(XoKmi~JFl:l"u m-k:h4Ph`6yf 2uD-LDSIaez.ਚtYhAKg%9ׯD5ѦFڬwB pGX_e//o;4^}܂VKEMRM,~v5=JƉ)}V^t2sӮjeTL.`,5Bg4doa*l}Gg2-:Ӓ&T8ŭ*t)Nt\ch戹nNJ '0z-lوL}.tG⩹|&dBu OA [q=%bg5 2!S{s69Ǫi%FQM}` *a c<pz S l:eRC$jUkEk8^܎[FpCVWihϚi FO{5s_ZZr7K\~m01K/`6EW@ EHwq;zpS2PKt(憋aX'~QQ%S9&Fg%sA4ӈUrnPV'V˧E!s]vL6BqP T6YQmkd=3i{X@Я{=eTeBr0+~Ti> d>m9I^!-?4j1úQ"mKX[mvk6 Dw3g }"~p&h6WqfU!i1: ǩnp[t`ٟrhsn-AZ*:´R.k]uIXnZUk3P{k6C:,V-ӺQH:tҦA7waaXvqqT60 Tk~4#":S,jù~F]7KXnqs`&"KXJ)ucg/P(Cdz`z`/͞MT1~s]/@r *-xcF'w% 5kC1;E@_Z@p!YW.yT:>a,U">%aulp8jqyu$Th~9*ȯLwEڎ=#[B~c jsV25C5$I/FK9xXa_ C搏Y2YHk k񚅏yL!QbX ;)TɹZNPĹjZr̦3ؓwąs:N9@Bn9Ŭs.M=o ]e\h4+=U3P(N e"MFl:,ڀO9 =76QPB!Fzt^=G jiw=!s|=NK IvxRcVKꏪ*Ylkn#6Pe&9uVs{܏Dw ̂{.XOrtw%OxSۙ'w^{NcT67˞9,!zӛKb|SiXB32Ng5V/cɸ]5iZvv/l'Nw M㫑mџuW4Ѹ'H@TWkv7R<KLKxHXw5ָ"i .]ƦsO5Ru_5GT0{1憐-vl(*Ttb)0xpiNPwPThiC|s)=f765x'8O-\ A9ce4xf)aȻX*)9SCEsRI$a'`^ݽj*1GcrUmqZrbiT47gjxl#UVT0C8Ӣ5 Ou{9rٮ4r*6I樄Ջz#IYQR ҡz=C9h门=q9 KaVeMt$ꛃ5#!apo5*ln5nchx˸}+K .szeU?86!cs^C K|psnnm*2eȾ26xFkgT hAiU1vIyק*x%# c(SvB1)j+EFWyW{g/dvBW*Y^iվ[)eT*;aoGs.qxqm-nz.4o:?xZsEUs5nOS^hQ tO*i0N(cIy'c@ آS<W#SPMny#5}ymw~Y*Ns.q19Q b|"dJZ=Hl5(}AN=HGc̹(u9M%*LiRDs cJ@{]@Wg*T)CM3G9&ϦMᎰ993:Pv"Bu0Ak9d`Y iR1ڂ}Ȋ̔D;1⭈s/oUw@ڔ\eBF8UB'ZySk|O Kď }IO]cdm:-T"9&^?Tlq0JnAv)g+m3ncU7|>ypmpSS+JohmkG Y5=Z14x("bUJUh+]T6x-dHkd4%Z.r)Xu2S h)7UzSsog7vzmHTm,> `4zXc5; lxNȠ!"%ǒrUS Xr%,%?[ 2~}-Cռ붅Vs`94N~g۱,6Pj4l.)9aRR(Z@Ca|@U<{"v 182*x8;w~yKOXSd\GQ)6VjԼc\s1RF}sAUw2+X37ѫU5hOd| uR`-3/F7 | Zb*ꅃ,iQBpU W yUl ;lzNUoe%¦q0n2h'\A iq^=BaG v=9k@U:' (b\cR'l+VKU!BQɡVw ~+TӤ7sUDt' Qq4.\1cZp194v"'N֟%OsV6:䱔ǫNg0<,}cy^is`8qb0Ŕ!#%P\ ṖRQf[7㘔ݐdl!T 8u`PB}z/7ʄju9l5ͧV p!qƣ" A&faL$&ytB'eM!"}HQjJ%\٪D"!{dj)5ֺ+vPg-[SuA n6g$pޅvk!ȃ$ϬK6{ksY(QȊm^s;ޘXjK\Rܲ@`1M4)]HAI$=*WYRC+c~}Uz>u_lмz4=c'g_~T._ @!ڷa@"U<^z_~~/@*0G~iF\n_?K_Ex$ ZUY>緈w~X\~z+^6#7~z5z]M0dܭhOAՍ_櫽K/1A .JT^z'Hѷ~VЊGp\Ki>?Uz\"EJIRz1as~'Mz>3юo ryBw6?1 >"[NE_/KYCRJ~?/1;r߸&ehk1;r)*ܗа oWԌ}.\r=JE~RT}ULFW[lsbp&low._EJr+֥~ z?c0{.RV&*[^(Korn>w kftbʑ??g2J5^*TQ%z+ֽ.z GzxQzo_ 4a*fg8éf2#wT|Ns>m!GЊٷϪ*GV R>Wj쎫Uo7/>WtQ]4??rEܹr2C>RpޜD:Bݦfrs2J5ϭJ^%7j.nja$8QF; +fh #>cLEޅ6鸍a ?螧JeIHM+ٔj`b*tB`gHpZ <²MvE87ԇii7gңY8cb2d+Xß iGv} 53m@Cu~/YhXq;???bjU?NvVyG3N& mVsTJ2u>gѝNNs؈<,U1(*yNDU8NI\.j3 OF&my+oqڑݛ@|5;F6mmχգf=JYcxiP.+,E+vlWE:qU3<>*e.Gac/߻ .^ڥC͌?'藔T"yϜN2m֝Oah6W^"9!Ҫ{2y%L"c/@ s JqnqҪ8.Pi)J.eB%qiҖ2=lXoy!Jvmy4\?O?Lyf_&+i9gn!T ,]$ZXtw 4vN_RU<`q63TT*@ͭ2>=?賘YrKhGC yC;D"ݮ3\4Yt!kEt4D*Ǣmlf!H2ҾOmW3Lh7+;z=L:̱حFf}fplhHW(Rp=L`Oa2vوe(  >|eN9)%Snoq}״"=&]0*ovK;Lg̳rwmԽ[]]"hT[Sa|%{bDlıF!)vy/>6t32j#+LmZ=c&F.[9vR&p`U [x8579;s1Q)q803cb.7n|SfmyBHIv?0PusNjq8bQC/2Q<\7=sn[+5ۙrQ:tvE2}c=೩Z_/IkYQ0ޥ⧺tY,c5<J4jzjp0į< 6oLx,E\;\y0#U3Xf2:/?ybs"@W5 -BPȘ$;P)pep+-@E ۱h ]616_,*s0}MojDbKTP/RlN!8rNEXS }}u,u7^w/>#a-x0z DG&_hX`AaP+؋|G!gh;AWAn&sKPҍq*%q:ypzvs@Ydv b\S?8Gt,ra g#TBcؼkOc˯HrIGf#LLJd,N<gTBsWCA0ےqX_?y1|\3PZg?f9\yGtCL6q:',& -ܼ{pmy{\ARk<^Sľ(HK-qRg107R> IЋ^[+\שjHkIot@-⧴7V,*9 R\UyTVuaBbƿ1 dQ`v= @WX3RSٙAkXZ~IZ*4a.iC6T,wlJnGDKu.j+FRlg3r;.mSyx{WgQ*Yt{1op0/b3M>YMj:-ffA3 p#_qa!-kCSLxyByn#Ek~. ⏴ ֈ RnOyxM w͌0ΰ[ܭB%ׂ__B&x..lDJDZh[l +5F:x;K+ʲ\yW_@?ISo[i<ՀܤWvFe? جck-وj([ݿf06]I/]dUT&8/4/_3+2GRj*AM O9bur*),% o}L20~5L}(~xِ!8l܋ßxfʍbt5ůKK=ԼjnmdDϢT3ݧDmLΑlMu2W*0Dqc%a" iEi¸Ut0A/vcEyx@} *ΪQ^ﳬWsbdNC=EFf5xmoȔCWib(4ЧZ[փ0)FA+t>ʽyN1lƯ>0x8gAl+lA2FI=C(3G1S48?쳵 1!g-j7wnT,rlN u㙀#_ beĪ`e-?t;xoq^[7y*srnR13kOeG ەKsDG0TgIm&"*.|x]y{҅즾"&X :F Z;/ZVrusx/%zwV[{5^E0PTo]{]|LLM  חS  6(~g1*ҹpmE _SpZ{և-5 ¿ܯ; d9Έk$i TR&~ȣCL;1u ݹv`! \c~%{u}1^2͐5VƢKuMJ)PցcE bX_%3^<ŠeQniGyJW_ΊbcgCg'Ɇ8\UJpz,C/ ;ڊe*p}eԷ s̭l0*Rw (J2V7dSY,\^D,YcS^^cP@n@ l?(ljivþ[RTcm,x C qz^ h5)okѴL@lk^pi03sfR!W{ruE0޽P7WF*pFS' qa#kɰ }u'T 2rxѾV /5i7Ra"ԦkSn DS @ߺjNf >=̅vfeԍƱ(]g/i\Ӌz@}ӦXiP&N 3Gr7v-h;AA08Het;@TldM7Ѯ8Vhׇ"t-_.#e PglqAvR~IV|_JU)wmF"rU*B(ڷ v `j)?Kf:+R˗P*>ڞX & iӨyzAn?L*vʺq:g!ZbF+Jx9eLьF``R\',xҜ% k^ 4,j8L3r8(b(d̥]UgT/E.AX7X< L¹8z] >&Өyc/u?h5SD#x.+y`tvB4 %{,”fǥC} ܣG ԏo X$wgYeCPa)D!pP=H !P_(w:x״Vf%F_/(J> 0 X0Aw {17drn򍣱8N58or=C\eTs\F*.iZ/""NCƠ6b=Y fFp'_1Fa,~^ѹvL%NZ;Ҹj6^Y]NKQ9jZy .[;i euʸf0S߿IN{KCg\(-~ fA`9ka.`:]bRl~nMw^ n)*,/@rA^rGJ"SwXT&Qi?X9d\zeDzE@濾 ™)uɴ=_i\;]>k#~7,b75tStpyMn%OG3⢪y~hLcah3veÈnV꾦0/y}fwf h{`r{ΜRq&HMɸ?|i4(, saky4 =LX`10̂^|GBM;(3O,Mnd,C|)4VD3l@v!`(')il"++(cXcJۓ,z@ Mw!RَCh9J- ϓlP|[.lxD(XcP!Z A* -;G1*̳Es+̶yS=:"ʻLjoe(#b[ ϼn:Nx(cWeK^)=9v 阱YU{͙;R=it%İw1&˃L+e nkcɺ5W_{]X73E)cNO[?׬~y3]pP9v')@P܍+y:L}v_ R9iCغ1l&MP9 3.ؖO0ipo;u12ͣ-l4W4Dte_aX#>ޱQ!YW{JþiN7eȩ2 \P]XI\ y[Z#s{KmM)%<ܬumf:Fߙ7uh&(RPlr8͜)rۆe&<`Ru6cY@]piX`!RH֎ =P;n=\3" AH\5'M GP*pF"_Dv8ʑ 59w6Cv uc`N,eBݢlS>`-zSG0+US_`INk(O#[X5n58|T[2蘜)> Rl*FI>:]zinwOMu_-R՘8 LZ4S(̞|J^eC8ԶMj80 kb:#䍥t?x Mijz"y4)RKHŦ\T2X4#ڱ݄۳n,'vY"mx5 ;+(}k ˿lJpo#/(lUQp8S5NC/-76j%+Lps0iS i:<@h}UӞbĠ~߃aQ7#*v}}7GGGQ$X֥reۥuqC1ʧk/X7pJuVo3Ji%FפZ:VR 8Vdeu-o=k@-.E~D~9j 2ccT2+fR-*myqnLeTEn9˔,5b] N(Q 2ݞXmxNqf/-WT3,LQa|.:-Ws&1BJKUUQu/ Xqc̰ K(uf UkHL~ "YYƷaSa3jÒn3908#_X4@5α}pt; q *m\AZ8r2ƫEهR> pza=75{Ģ2W*:@Z KoX%k~􉉧P@5RI 6UET_vN{7dfk_!N9%PY7ۤu!PSTBUroA%-H"2XVGIsIQP|п rB5.p}`!riC&n tKzL˘DF55+;O러DYElA -grl= 91Q+.%JSS2ӯՌ/^1!􂥀ٞ+hc^Ng>pdu9:M37+5g,EEkAy*lFQnZ~C}!WpwU7*k f6fQQjȝ扺:ڟȧ l kmAp@fC#ˡLqs/$;uu; ^S7+M:Cдۊ ;&ic.CgMU}'\!{%z5X:55\CQTW8fk>0  w,yB9<v1{ܪb6ǴW\thP c|z |6|qqgM9V:B ?FT9ה(7G N8 iw rx! jϡ(ݙxX2ʶcK5}i=u5Cs+Eqhj׈EU_)!_mK xb珙@r̍l2{9C,T(r\rCb\S'J[';K#؊!*UŠ jcuD5)ia*c̷muoAd`@k Kb1קoN`DR¸ , zb%骻AϤtλ4Q,|acEyuYֹ-|A9/iV^jTF/LOvpOc9C=?빉Pfrzw Ɋ<Z.˗>ފfM;Fh3V% P',-+a] KgDZZVq9D+f=f RK|7 1eQGwt9T'i˓ԏ ^O9Qt0 Jĕkkc:>[~q Dh<=&`{dJΠ BxWPt%T~{i(vnPF 5KC"H2\Wi'ٹ|8P 3 ĸ1$t} P3g.%{n{ -*k$OA<@k^{VF rŴo=wίhT 2v)itsrK)0RQ&̩[tg\k YmZ "gdIPљiӣ=}fgl8l}c.ǘ4*`fj\/ъAg̤pO35B_2G7QsʨhRၥI{푱at\{h![LJhcu>D׵L@3([|Fq<ĺq4#L^jA8}9#ѷA% 1K_V`菊j`JsZ, n5|DX t.}%ٜK^ p7+2TPjffn&b..`HԏJ6kI*hVSe+j>ePɖW (prCo8W"8"eXΐYMaˮE5\0QX#q1A/!~ϛ"BfAyc]!N ^ٍve(YA3CvьMҔ\4 i8HNPeLk^1,a. =!'V2r^XK֫`!*AǼ!u# -:@׹ Z_׏JE%1S-naNefdK;ezd 4')6;Wr˅)Sw٨ w {JuxB/fL=Jd2ڰဿq*1ײj0lX:jMޥ59=a_~%x/`=vf]VWY`VHhkTy?ݽo +,D6Kޘ:Bڕ ‚S$93k7WU|fiD5|2ߔGRӻvw !2'<WEo{lK!hvz[e1}fo~¥3 _1S_蓏*mR:Vp8qvo@ 8CVK@;$ eBs̛\AC #K䎉fU>&p*X/tpD\"X Jd,2e h-W0ֹW0-!;%.D!uԱo Geѭӓ MRPe/*%̴u89Umt'U*avC]ʼn6}JB GKU+xtu_tE,Wԕ_N1Tq1T}?NOw0  WlPKtK!*]He|ͽGl)cMÓ")KŐzEas>*O:h4Bg+/ DhlٰykY̺f.HJAH9rDWq2tb6Se۪K*,gC@%U0tWȻAD|Gg˒0qbY VZ0:V]Z")}Y4ltNyqQM13D 9ZΦbG&nҠÉg\$p3&%UI}J8ޓ( N}ҙfIc26w@z+S2sc,?Xg^c$FIqUl {_&Tͷ̺z۪_އ+D1b^gCpA\m>]+1`R_T ;sa IZ|[9s1"n 5CJ(auqݭP:O4.s+=rgЎ2v< HPn/O8sbA|0<%8^FtA9԰Zw4*s,r8@ hpgBU+o7NEq @w ѾoNd\W2oa0sI"'Ml)S30f5o,nQLBk84:i)LxodPkg\ L/wK./t k}BV%7kC7eÇ$h! xGZ6 &z?+LcgrԩUӴLgC1sӦmdh:N'W~-LLsT|z%-X9h[|%%Ur)Q:l+͗|CQC qRx; tJ 4_Y͘|fep;@ KcL '|z852w& 0&QڽY(EI#7ˈ[K Կ|c?R4ωe3)G Y2q) ?XVx|L`QMavMҀ YQX%mpg3M`x J+oˊ-0_k?_n:1-# n*vjs/jxO[U :_R{C|S5IpV E[ tDxALZ22FAܹ§KPv,B FNVp?E}f$;L; K_\w۲sS>n:^W3DsMʲ/OB$Zt=|L"~Yrkl@BO p1R¾H0M ڨA+mħ荆qJPz8PJ@59" C QIT6yn.v#\φmmQj ^s/Ky#*"!6C |J&֘2%ӈeK%0y[x5ᙅK"!^b2Z2i˙˟ e)Eݯeqȥ5j,3]lVN2ƫ5bo11u)~gz~"r_I{( =sɃT{˼u~)9g%.XE)Lf |XI~R3/WI!=#)):J^.Zqܑ[@aGfiޏUYvNndE䧳LTTJ^qPY%'A8b㼩WM?1%V^.Q%{mpSC;#0$ƈWmTˑ5.ԡ7QU~R,\6R!:]A V @x=}fơLy#=pSW A&h>LQ,VY"u9[v)̣j2xf'a'Zy23#v} ݡs"l=m9(&%q*VT N%x[~&%~Sx%x X[^#ӹz̫S4dv:CGPy마NYНۀ.VVD`r }%z~ ahr1b ~GRSvJݵs2>t2q՗z9ˎ𣈬ll_(JzrӨ>!R2z03gY>Ъ]61.5Xeݩ(/ӈZΦK7q,Ctu3 hQn}2)eJTfp)Й+x#3_fMƷeU{%T;·B!$3bkhr{w+'94d]NAx=j S+* m9-`u8Ҿ%Er|D5 O̓){]0T8@<[F?5@r⯷]"-X!O \`b5Y6lZc`&rbanK?@FrE a[D6_M4 JLq3+yQy=">龡+'%G70j*eHs=X2Y]~ muYH}‹28^Sb8QT՟hL#x9Zxk~!¨|\6$p }%7tK' ̎YU3rzO6Jۙ3P ү@f YY޸] a2uC,hs ;,wcmcP}cNC A0[qK?(bYiy 8G8{xѴ+ߙ*@k6^N\cqEB0 ![4švKWvPR\b-WB}Eܶu<ǰO*O7ַ+fvؖ0 FkSb^ }n͋ףFN5dPNY(/-VT#oըfImn6Ʀd@B_ISў+:Ni]Z2^.`Kex?)J2uM%b yFXf%D g)k1!jwGO*usn7S2wI@ʢ1fs 2RJ6R 7)?Mbfzn'L"&E 1'z!R^FK!}Iӊ ]bZ@Jt$6^.v3+ PIJ)2FsYi+OUVMyDK_dǰˡq9Кa va-de`ģ|Z:=yo`Xw1緘δJqYr^4|t乱G,X)X,S \PGb_I`cv&H9%V `&6ʼ so꒩ 1CAo,))>,Ez-OA g0] aK֞GШ1yd[T6&؏q ,t`G_&s19Pg!'7 9 fwg3I.eDc>F)ΉLWY Y4xL &,m2weN!ĽgTh仪LqZMd&Xad\1243+q 0H)}QJE* Fk"G>m>ӓa!"{ѝ}i  pLXQ\< /o߿݈L 1 !y 6`dӻ2nX)^,ZU2F'2q}rTAaVUNжYje\=]fFYږ\/3$}.Yr.kCNh ;Z~k%-.;!Ny"}W&#y.s(=/wؘ>VO#jiЇ 6kTE ETu4,}AGXo/uܕ9+r8+ a!eM1$p0>"Pe F\g_5QQN;C [m3 ee_pg‡SZ|[?dfVl8-mJ{2G\־g'mSM;1M%ҹz' Omkn`/ӆ?D:ԡCyͺd -f/Qx_aZuJi.WlDR=/*EcnTL}!=WXoC|-v3u9k5"y&|X,\;8`<,GCkDܨ)v@XfEL-"\*s([߫}gC2E%:*3iPX9ݶf27ԗ6@4*c!ŘOɣa _s+8秆i<6|\(y_)a{,'78;[ O{\4.(BQ<!/oio.ml)2b!q d˿MbfT0j[he]hyD`/3w~I\^(&,ےÇ'C QLЩӿĻe<& `1/ PwQp=YY|ŝa1nZa~sh혠IkԻW YYu\J.uqa).A+sS)Z"7u.!ʤ y{Lyt˭}Z>k)2:21yu7K;83Ծrena4zz1s/G$̻Q#AX%te}"Ef51s3[T/j n6n*g5*+iNP.Q" ʳGf;Fgf6Z7*ӯM!y6d37K0JƠVvgkk kgK5\R]w2_s,}Ha5V(ԀYyS%_ MIB=XP,p'#l%QuSN}FTZ`A\p}s*TɆdٿYf<ޮekΆ$AϼQa)_R`~ܰ5gl0 0=_V(^@|Po3,s}HfWf}|Yf!~ l#"eHg蜲AkѦ98B2D+R et3p2IbSal˼04#7qljۼ@}%,m^rÔ5 ^&pkњFJ0@ -_/_#Gt=ߥ&*z&~Wa\תvj[3|g'̹,a73ƜC:u3b[q&P;3n٤~f4l#h0;eN$.\׭Ds_nI[L($S#jG1:e[[a :Mߍ9sKG1fJ"T/H?TJeB:lqIbgpWl>pd9VѿD 0FZ\8L_iOyuTՇٍ̽`c6#ӬxhT~s-Yؕq3n2J`M3*?b }#GeVyFof<.0˩YcÈ0[N"Id9뼭urK.˲[)A=Rs9Mq2#|ͿO7~ʂh1_mk#~o05 D6Q+_8h0TA8~!In߹+sWJt:mg}љ=xVfe{9N_Z0a!b2uO/CzMl+c*Xbά>@ĥ ÝJ+ҏ~p[s 5pY͉OɹQƊ 1fj|Ҍ bz<.;:Cp8<ǡQCmjqL ܱKG J/B+W2x3e uw5'ZY@;ObGAylz˸oG,_+MarV|E f\}e}B,tg>'򏥱{YC@;OCs&q(Yٹlʬ@]IONv2^j , ^tF%/JO-6F]JD!n5۔5̱ooS,_ghe;ןJN zX%t/֏T$+g/zCP5V xP/5wpVj㯩o512]-#\6u0BqWXegEom|EuS"J-Z&k/gLp2ZMYNs,F: r/w}6l[xunU6D62#]R-n+"bS۷SϠg៊4CJl_ Ŷ*=SV#|33"9pva7U&,-JjncG\5GflXruE 0[ \<^~YSe-qybX5/\?tI*o\X*efؿB[]#dOywNgR#Srňs%0?(, M3W_i|c]H;} PsSj$|ɣm+ y>ψSs(:z;j=G5yFTZ^ 0WxYL@PTIR3#oWaGy'b.\\cޅMS\0S1pŸ~?lLfX/?eMw ߂ozhu#g`z.,0ј NB 0f<0S~+@nj癖J'i+9en1:fjcё0Sƥ-L{Dys. vzJW̪Z2M2hG&68F,hseCGej]89V]X[2E~_> 2؜dr]B ۼx)܃Ŷ:ܲ ecĢi{\G<aIȕ/+q.q*N!O"V$1}Y7>VܚeGcuocBV0jwcmh,By16Uvv< 5BXLy)ĽVx' Fr0XwaN.20vgcQc4H>&ǙytKH/_2,]#-ݼ̉g)Ei71w4Gn)_ $J޻MGNf-SamڋE3NqU>鈀PƥF-i=EvVF9-U<7*~Ia-ku21O ڐs#Z5qc1B+9n1@=tӆqʩAyw,ZÍ`+os)"/%@ Jή%^L6/yA,iT&rSrwܥGgICבLOgfg&0E d4;Sg2@5fSAD:Wyn zX#y~U7f̸X1G\U{k7=$vCATDw7q1ü;1 T'RX0;S>^.' %pZ>aH:i*q?}=Q J.:J(OCܔf#I 0TKHY۩-e; ިL՗A7.We20tv:ٝ~g0*ߖZ1!LqiC.gb+70p`UjGh9G[ q:yr,d|Զ 㙞 ?=sq&Y=>O-n0JaADj~uMIk.vDsS&Еq閇0Ic^f)q^f9B\fu q 1+܉TvJ{&r`擴^U~s0Bf nTEEwԵ2;/~p:]~Rƻ"#:OKq^%s Tc{ʰ~띟SЇiv G9obvche\3;@-n=#_g̹Ri)}=ƍP_!uNn{[KW|JHXv1)fC]MGw ޠ]ǫ|1С\,xX]cu /9Q; v2qb^%Sat);3Me|Cr9*a`3^nwz.g̥qԮӡLG? LRcge8άܢVxR/y%<}Q==Z6c楛8L<@ k=c9 %)%Ǧ'3~ g>˧4coO9"s7ـvXwgt#ɡFJҳF0І2C9d¬wjAϏI2B.(+)Ybbnc+3G0X;ͣN"`]7ܞݝLЅ(>DžʶQ{NjS]S]B:4x%,U0:Ϣ>=KVF}陔X+ai3a7yvZ4 )ڃ[NDwO^~#ѣP2:Kc-k.Ȋ^k%2\˄szjLL1&qqʻ3dt;MADP+c{jh ^&Z^ +%{âh-bծe~#5[PFcB2-0%n2{LѼb,~aSqȫU6ī6ʋQϻO>'N% '1y}<¼L!bopsb\?hz4WzQb{ b'<]#kUQz9+-+Q! :1MOE\el_&wYMGImOV?812zƹ'ȷgg3LՓ` 5R"7틤.`NS%ʆ=9 wrzns9ۜ_[/iVcF-oXm0MR <>Dqǎ=Ftxϙ]5s^~gs4+7RmPV~jq (P+<1#0Q vD܎J`ZV{5I5h/9$sQ6(;kSdeivJQbssmi~c8Ks~==" L32cxr-LLgN`2Ѭ0)JDt}*d.Rs0q]%T-hJ tjLtOi nvo:6A/Z8Snڥ=xiޱ7,F 8gZICلmKY܍PܳWȈM!ꌚ/1q^;9h= SQ̒R,NW~T6޾ed1~]x: +]438=Ǡw cQTucqb2[zIk˰B.D37(wvy*3g/K9xeJ; zY{J[*.)^%~Ck8ZW%刱m3!0CX/LOĻ,>J}(J%Td~H}ѱCf/a'S vm GInw bs-ǟS!d۝RG>5Īnc!vaX xYUJu\o-;17K{x/ea}NJLf lN*4#| ]f_uwswĿ 3Vlpg΃!B4%,Of}7 Ny%ܓwR/ѯ^/5 jsң屪˞ۨ$+2f]RN/9~+PN*@sLĠ~Bʀʥ ݾƥYUoZ5,6TgUBW jU[۟H*Ú0 &.1p#ڠWAiB]~0}+db ]vEgh):͈I(`|?tcQXDLwgNɨzae>S718w h}Y3T W:?Ƭ{況}0lpao$t6C6}fW_9DIg^LgP S!h?skZ `{|5P{ m!g:"MLC= Y}q+SF22R(Ļōyo"&Ne|+-7a5 48ӿ_ގe GH˸+q`'Bgz6{~=XY 'tD=1OdN7AeTR'3^YdNDy&} z-S Д3{eG {"[.o;QxkT#fMf+g0|*KXās^Cܖ3~bm { ]=u8z)ܠh+1]]ݏGc(ؚ51@iLx0f\RseHɁ͞bX㈻"Z;$X(:89O;b/>}'髠> $-%TuY#MXbep pFpƝb")<^.eq ON\)}!3p {:VX Por=4Q؎=As X(^3<̪L,}ĵ% `勸<@z^2Ma(-lG׫X'BVu/XqT[IQ0&UNV#/f$kxzzkIe724yzo2Wa4@ vt c$hY9ε7%w% Aٞ`H8'()%u3.~4py;.Sxk՗fSobѤ̡ 萯 (gs˙YzC lp@daLYnk{f1vnK\YL:K) *K&,ρ~gmR/KdQ=WчCT\Ks238vp#Ib-c>P@a&h%Fos~"s"Am1L#,D𘾒`do&fqQA4I{ē$*@Uڍ8qK[-j z mtq+0flHg9pL )݄v`c>#<х}@p%ncџi"T1+u.+d^*P1n}y#SL9G_eu=݋1}aD>X6:[;YzOОIwl;AHxرQ-r ӇYi3Lt^20E3znsL0i[rvwNc}7\Tj|ٽ ǥ?2S!2ƙ]#fK^BO1,KJ}-W傰xJ1 秴/i 0Y-}3-(h-N_.W!ZU0UҎ(s,50u3(ryl k? ; {,AؤyW_>wij .k hNҜe8/ܞDvҷ/ C6 e1h/T2n!0_ޑj"*ܗ*-Tfx+`-7D.w*_Ϫߤ12ޥ9ͶOy 89yv &&q4b"wR%Lm_7U(2  2F̺AvT8ZT`)92ֶ̠w 7r].XPm79A3"~浘 }(<#['M X-̙U3Q^дP Sh9>m|])5JhTuIPY-& s49ΦLŲ yi/c%C}fZzz2_K=cu7Eyֽ1Ms;&,[UQl-o%T؆ ;J`'0pԾ:Jke{TJ;s`5(<] J ߈^wV%<{\ʧG \2|Jo%f(c~&r,W5Oiǘ`M Ûo%h !pA(`1 (CEch,_i5Lc8O*Q`M B 2BW(Uz$0&w˳` 8 k3EH\u1̫W FڎT蟑ƫ76Bf~4kq5ƿmX4jR`)rU&Kd5_hMlalLD&~pr$zj8g%z Me\eFFiӏFopz03]3ǥF %PJi/^s|"4Q.bb.1V1j1rCzЍ5g)}a'I1ݧ[L0 `T,};jf#; *uC*5`ORܑuҥ, 5X(s(1}Kg@QPSL/\Muxj%fbtnKჸktXQaW `)!_ 'e@%#6pfd,'w-"* uIpaMv*rf.9"eB5ǰu! _J+9^&FS̽4>/?J>Y|jjcY(pMosuj˴"<: }BzMO1ǯ2#؏} <z&Sy(VJ踄N%WWĪg!JMs9y#pplЕ¿4dǙm۴\Kc)xU@(F>C\xZjc2AcW-t3aќG.9EW 5 3bi2rܻTeeЗJXBU60"Kݱ`?/7>҈"1sZu{nb wipt{ʑ1Nc*Ѡ/rfE=b^950 ]Y* pq@}e${"QI4cw#~ص~7rfQeoDNefjԫ~!cN.fp_F%W9fs*gʢ@:Mn Ö9>!Zi_AwsQJ3̊Cz0Lquwc$ aԮ '%̹ ֮Q` XLjJ?;1)rzX_2^&&aRu#hwacΌD,%Ĭ-aB;-L Ś#E"d^gmeu"Ըe[M'0uVBb& (Oe|&ԮRW-~7%M,;8`:pJgH:8\ L5u Hu5ƒGJ+vk{RbQK{eCw@^(Ꙧ9D}e&ۇg9ɂ:!G0)f}.{C tq.4@0g zF0f;.C`Qn7:FRʲl ` ΄]Mb--2Hx"NyaUѬq3pwCi~!fsG63E{ť="[~AzNO5D 8*ݟ cKs=<Hi L_ڗ >`Z\ 90Q.C<AN8 4@rcw_lu,>{?M"򹒍x ͬJ2a3̵,Û,S"YmJQ+3SҽN`9ԋ1hz*i2fxf(&ebpT?V X>f/<]j1^#JFGBmn1`.U #k *?Pmx<gH7C ʷj26_#3D_KF8f#cҨ'hdI^TJb1 v&&Z͕ ip5;tPTXqslFi#9jg̨w&& d{N!sewk~_$ Ji#YrPUb;f"/Kc9i z5Z=<55ʢl @|,3*>铄,9L$! ϡkѿ]>5˛Hϣ~YjQ1T?uۊdڹ2^͗bc"S''dNMxA͹ _hP|qEcPlT jϰe!.-;yҭi ]r\Acۜ 5g&Suh>uc3}jvBb`.zi G702gP̪bY/=QLh0 d:KkY|3cI!\j+2,GXvc$!8^J:A^3:B5DrK<2=BPXJC8RрIoG'P eep]y _#9=C߬2F 6i J.g/Emr>:=(ff,tZ,C3ZoE)I@~4@fHĢOX8|DBɾrDe_X9 7! CC}>"TR@ Yߢ\KĪ7d73}bw>YFRS*(=sa}a8lje}XR`7M9/Ҩ_yd..k d֘ W^0,%J :_XY`C/A+Sp34#Bimeqś*醥0yk:53b* ǘ=Jv2GieR$\QS}c(ێ,`)ŸH<@nJV(.sA4u7٣B\oLs*THzWTR\3} Lښh|]hk,4*k>hNg EKzi~Ie@W@/Ó@`gcѴJL ~\lZmm[򩢧91;s;u(-re^]18"WA,oi%·lF+zv\T,J0I>JNJc9%WZ=22*ehZE=AUxQɿi}Y\E!$վT'DycmpVly3( FKt40bS<:* 535 ]~[:8=>2Lec^ԩY|76^)1u/ "WT*.UI% o3 rɛ9f~Rnl6̪-;N{6&-Q>%t59 =SD} =35aAy5*Bh+mX7q/.:S8 n[9oPw+טp)`]_3c7)'9әUܰWŌh!f&G"^L2ZhДMZD:y!:?4Z[{gK~9 v>O%7|K_XGYYLCO}X=e*!1AQaq 0@P?/TR ҿ}B.\ ./B.\r.\HAGqcYKH:8Z- ^ r˗/+.\peƢtr/~\aU@˗t(0Eȸ.C \(HL :?rѹr˗`˗\ yʉ 8?ĹqK?}<=1[3=P@:J333a!/_\r_K.__a6 uG=02/aHtFTRt*S:$r˗*ErTJ+ tW򨒥tN+RJRQb躃^eAX._*T}oYR W&[`UiQCfU|dNL#Ѓܹ}.\}_}/*J\qbqܸ *U[]ZS]@5T*TAper˃.?Q%tu ~@6&B1s_n\Yrˋ/(zBTI_en-q!c ҄_*T\/*TR}n\}n\Yrآ+miHrM%JTQ%u*.qt#lhtCۡab=0ƒK#$u\2չrοJ+/qa O)D8f՟~~%uRu.\} _CsGAp /u]rUꌾ K.\Zҥtj$a0^J`Dfaf#% ;ch[$]#|oM*!P%J/lJJ+e1_ٔʘrԯ}.\r\}*T+ + l|B涞 2#ԓ.5io_edͶYr˗JRq ˗._\QǢ e"G>BQ(*$p`˗.}C*;.\r\}jWa:nΠbi{x* +u/K -(,wF* ވLڮMsX[n\r.\rR'f/6XvkLJ< n㺪eOF A* M\a2X\uV+d4U!"`w2yFXZLPr .CGt%n;]*B `[ekIܴ(䟿撿rӹ0z;T0Q8HTAi,splXUo+L`Bj|ےpӎ^vAUTUr@ ݩxF- ҉6X`JVt*422tr˗_r J*_NB|gh6 fc ANs%$5& 2]FE\`awt$K.`=//]W{rXIPHͰ]/l h4גBlHƱ#߿ig~0)#Q^B}~/1~isX(ϘK? O)׼ǩœ| F":_*W0e9꧜ف!NsSUKB:0 !JoRv00B#< dSxKY/d`y Ц^‹c^/ e88)Ef!PӃ{0I9!npHW .,y贝0rǟ5r` P{ioPw8B4)ōj*k+LvS2riʆT =o3#Vf ;+ODA, B!n=Ņxq9MBϓ=cf%n7-o%[*ϙV Ru}@+E?\rѹUnTJDK1V9F$yQ! ՕbdaR8+V-)9KHHW>yuhw$%5˗._r.\W*\+}vEzd(l0(LZ>_T0A r|m,%Zd:Jk#s{|22%baizIf; R[*r9>0m5V򚔆C~f YuӮ 7 BhrԿ.\rɨof);`S# " X' 1.Xq ]S!qr#?SdHrX^ ̏:5QtuS&Gi/v/99IsXr?/B082Y_Әjg?Ws[O*j]460T/:=e4XX-yJIv쵨<̮r I<1K˿}wLx)P!osAոm;:QPJ)^׵6OD*& $NJ_E4^ ljRҹr$RPG"DzcUn W]JRU[J*7 q!k~JU7.ԫFv)ح@%괡_.;3yY7CՓ.J pS~KCβJݝ[ Bo_*TIRWST\z,<Ϳ;#i}=o+o"L*Y\ޞC-eeuIyW*j& cvsA-koG ZP&>.(14ODVwwwzV>+ @ ү?#P ZDHqV2ŔN!S-_C8xn$_w.\_wy`堨5SP=[]Uhߨ+%Iʺ!^d"-r׹R=Ve}t#TWM} Ǚj'kLPY1P1 #c{j0{B|l2s0e?Tf4ypwFoʵ 65D"_ '%. C@mcǍy~&mR{ 7J/H N_rr%J#/^zmm^4Lny%Q3''=8MAoklJFNפx-e˭+R[Ÿ.Uq 7.\"UmIP`̺֋UAZ&K8! |sr'ĻN**WG~0UxCoAMrR)Q 1ejleϭTZ\ L RԡV( %r7(򐥗FJk&ْ+l;nT "^6Al? QEB7i3NU z Jkk0ч㔙f}X=+E| =Cf⮾kC?5JӰnJM$q 77)RV9Db;g{3jø ^ M!{J&ST8b0|}n\KrkM ᙪg`N%fi)nX\Bh*~An?79^,雔? 2˵`f+ 5Pmu;[26aB[*z2,!MI2p9WBmc,tzWr˗/L[)+ZvsCڊٓ:EXJcjnݔCrw _L܌ؽH)ݧ=@;pU/%QvS98㜭q?wrSO8L]aY#;wѥKiK)c7)c@L"/[1JXP`h[y!EboeZqO{C#\_._/(4rRJ3ʸ"9b5De]l"I))?v2ª#bu+'E`⇵k{ݒ)ǿ`BW9\%V, ݕajk*O*WQ̹D׶:G{D|Lcx| |Z u;yϠQ)2❘V0Z%>' ¥={9 J^rl!,!߸2, JN-`!b`D[QYvcf`2`)q77gSjB6>!ݼk˗/r%]*k#rf7ӈ4$57,`B4#*e)G?,1̺"ިʇSk-tTݨX hEs%%==u<8c;y$Iڢ_O37`|& *u}HTj;?bielU<dHcC,sD$&651ah-`ERJjXh` 2_D}Zu> Ha# ʸƔ6?}ʘG$KKK< r,1 r^2 1â!:^qm̗zi~!ME{=OVHv2Y._}oQ2T66R^}H?~lEk9S }eƕ=O If¢0bXb7sv<.\zy"C5olLD\!6 Kr}o\r+øj&ʣbxZr66.0h#M`킣UNQ,9 7ZEZhri-,QU-_!b_r~LEN% Y8Vˢ\˗/w-eD dv>'iዀ6"C=/SP3Co?ք׾n6'{A*ntf.ܼfg[h4ݧ?n豎!}X4Z!)J7fdg3pc+}ށTN8M{d0n䲂csΧm>"[Sߊ.ϧw r˗._J7/tPiI_ ɦxc d5c0O5Jk$BVe!M[FwׄX1 bCzeӫ@څa pd瑗y.pT>Q9H˓u}ru/jW}.\˗/_[k r ÿc3d0EoUKh0֯f*|b:neоY ʚQMN#ZbJ||b#1!b#IYb8a&£0Uo!J^7zG+"+B1vP/Sʌ_JVRY~S+vy!TiBɸ|[2%Ɏ^ kJ;[C;pTX:ZWbam4ps}53c2g[xh0(bP+g>f~#j3m Y2BT1Wous<L4~Xu *~be˗/\"i&)㝻9_k'e3l-a8/ A._^,&wRHϘ+ z3b@LTz&^G{jig鸎ځM/o+3 ԳRrd4BM :nI++Њ+~(D,)\Gn<:e1w8~f7\2}La_bm5 U8#22OUM=хJ*A.U{\+-ێ5L?.L9mJ0TJw?WՍ]^UM^Xy{6(w," Ev ;QB|`X7 ֘|{JzW|2W.\r ev~ }?|:Vb<8}~*)q Rӽivj $2pTh @}e0w~=Ȥso!SyvCq~? ," v{':#&jr Q}3c6 6'j-MرSJR&tt<^RT>gץ -GDqKƭЪqUqy !pʏ"ݱk{Q5,?f~茗U]߃xbݯ!T U?uL7LI!n$ϯw/u@sɳFpb:(ٜ&v<-!Ji5]ahj|NpqG7īf-gzWXp.FX}TD嵍/\< lwA-R]ц7NX- i>%tB!rls%;.rRJ޵*_|U$WoJ])yM3cOi8BG &)t"J6K* ^pk$%+Px}Pp+ T&IQpς ئ$c+i v0Ơ.܌bW!Zq4y!YrC"b6VHJsv\?BG3v<6b ؀g!|0GXɹ&\  C?8drSl͓fGo$e)cZ5'ҩO M[RRw3ȳ+x7e8EsaqUeFEApJE$Ko }o$z*hsk|gs(J.f!E ὏ `,yC}J"ӤKxNA.=]мɦTӲv34=(+ T1k)L`XR* (+[_c3%UJ][%s+?ځ t(4MɬnMe=̻@a@Ƽt T's>F½ɞ?L.U}FE[%y8T NrDB QH @m$ +xȕZ3@f"3 &11T31&tX#ζ4d 5/C"i UKɖ/0P_{k _o,8y^1nx˲1f,u+VDt5߀)C@<:g`pBVicАѷ]ku._lwe[""mƛȝcpg[}(S`ԯn&N3ɃFgusf#0eqY 0 NnuƬ^Y9 P( lL@N Өy8M<8pJMn 036S4\9u-g CWkU˗._KЮ͙0mCE %ak+>M]1~bs,vCΎ dx=8LZ00ො^o |=تUDϴ^)7V\^Sұm (> bjŽ3 1k'#Y2'FNQP9P'?&zԩ_.=YkіU#s_H&L(szf3ty5`'Qs4$4ld|cU+w F1Qq3ev0KȌn y ZjF>X{ X5EuƠ/wHnͷK7%$U33U|f6cPaM{ƹn)7Vþ+/m`3N tݚs~ N`?*`rU'(Y.Ԥ1#،aYGm) X%,j*v~ێNQ{[W(!| Ǭ Co5W1Q3HsX<]AgT6?K*OOWm!23ow=NB/CR[%L_ aB˖K",Dl4oX}Ec{+NC_ <}#цH22ҊPB EW )X 1b X- XD p3v"adv%j ¹ca-Kޣl;Wg/ F/Y&Wj+8lßlq2N*YN0_7‚lՙ> ͋!&צ,[L R>Pq%I/P'ǤXc0I?셞*/aXA PŶ im>J4PdZŔpOP[,߄Y@+UeeIYbSukQ3`e#Cp4ªddcMU2VKa.Wc Ԧg]7Byxo>=h~6~|j#W%.15Uo_㾗/꿃SWt=_/10)tx ˥e?T ^~FE b ž'.lT<69հVDhoL4nk_-Id`66s^t+ )Z4i 5`[dޠ~Ț[jA1uNTSBhƫs1/&cSMiLpKxqV>+aRp!/?bA6ʬh [1gNDZg?_V5N4jpq;|E=WR F_'/g_1 Vo\Ꮏ&W7J '-UhTAC/"FemyBdMe®3p/Zb?Qn6a@$2Nl8#@9le#.!9pzPXIS +q*z4kjs?8.Rv0.Pa]438gI@8 mfh<4T$݈^/A(/mmyTXmeI{KfnԗUf%aܐ[-N*YK c'x녮gljbqw`wr *C[cpɗ7lӫy X0̉oR^U]2 k8[aOTk./ByBllNDǢ zr힇_ORkǘY,J;MQ*˗6S 4nɥbR0K];*y<b,WQ36 ]=t|v `ÃMxC Ac@J3{UԢStcU 9=gT9S 2I?C2]ciiBhFfnb[bml65rexLULY>8(j.l\1UZDsue ,MkEBƞU_%kbvqQ&j^,y82ZFh"-d N`0;lmr wREE0k`, b8:Z%ĻPklN;c+8e_[wc8ߗe;AsGvW඲_dG¿~12[ǨZudҥ}]+p؏@ 0j_cVgٙc:W}XF6W JSpߎ*[Tp*RKr܊%xnʐ,N3_b| D4 Xp C" \iż FypMd&Yj` q4t%*ʇp_`j9Xv-FQlee~ tlbCXZL)DҳErj-<8\N&9cx`51F\YcWGtn_5ÕL+JB;aB hdI|vJHgjbQDG9ya`pfzFԿt 5Zu,4Ŭ5z׹Ah!Bj)V4h$vn+%L2grI(Ҷcɗ& 9sPagI{@T)(xuZj'8 uݩ{@XBȮh9HX ^E k0,- `J?-R#1FU<{U'h4@ x@̢ͫ>(s {Q= Ѻ qIW`RgRPR эoe4GMQ«k:iݟ0A@!\mB/ٍEaEFy&]}7 fMxaBw/9_-ƗOy mf*gB'Nj#/rղ&e0`*#bz^K Ib}(ow rH y\RІfҲ0m KTFRx‡vfPw}60he Wn IJaE1Klp*6?K@ݷ4'Bt )DNOnvBrPxizI WEoq3_;edx旒3Yj^NVvޛ:Ra34鴅Ijͮ$M[WX{"7堂W;Ɓ`8X@+eBPbOk֪hKuhYWʦX[0X+u)\ؼ*˭AbRႋ78#~ H19r\jk_eheB[4LD9F(KYnuĽC燹Eu`m?ilpt_vT`L_ ewXAXq$ե>X*v=H ,HU5pXRW\]2SD#BXt)صr*3Gyc_/e]z^a_)A>)1MATi&*-ʋdٞ[< ׅѦ0 3^EIP21|\ Mבw2xܸm j~EcwKu8D \&<%.-2z4(F^ ^"ʽT@Rv!!m9~g;n-YQq+ U:ז&ZY#T;1KE3ZOoGیO,C~~;_^o4D'LJ%ƈ@C1EH_^C߃hN܁i}.b_P5DEKϙA8DYMiZ̪ruX@CIZzKds X.Ȳ1峼m1L-n YE(k+P\Ns` g5* whYfa}Rռ9,  o^m|,CTc4B*۫?@ qC^~+pbA1X[ "98z6w u ט[39:{wB<,_>ŦNx8}3F{oL}:φʳ)| .HA/*%)[Q^gWjZ(Ⳙd6^9dEٶx ?8Pq~nYH54n!7Z/,%O J:vZkl]=einRVJ%^V5I, f)I! [  Y.aC"cuF%+ڥUi4NDcsPG{9*YAv9p"` ~3)$L~tB֒kno0缩-Ear =t Ҹgh n g 2:*Urb#IG'r ,b_;JSP"#PET`5ⸯ)2,/cYc/L3h@P _r3z>5b]XXW֢ڣ`g#RF@Xp ԡanԘ!U@b--Ӧ̀A򈣹c0ѷ@p9WBAF!k)"Få۟rK.K$jŀvVJ#] n"3sD*̠74Ns) 蔭SWd$o <Կ vJn{1Er_Ob 2vCcp{V".yb_[`j0ૂ9fOӦ7h+ǔ{Lr dlu˵>l|&<1;Sa2`+54qBn|XmVë;QjsX @LSVDolJ5}a\=x͐x?.ގa.ʍ^fIR-E* gf`uD0B` ."Oz(K֭P#$雄R.+W>e7]-O-*PY)36\(\J:=(sr*"3p."rTw)6`F1r /Oirso=ATډ)wOhP_ aevPN`՛ٍXچÑ S^, i@j ;ucgDV ,3 Qp=Owq`,s$.42? G"vƍRryʖS]$DWQ0ȞA`Bn{z$Xza[Ь), L{q XE/3F2c ^'g_$շL(fjw nf)lD b#~e}U lgdm2W Eh\ybB[VD.KeoK(X ̝)/hb6Xskx_1Uu&4TbXUwtx&\Lr o9 jɄ"zk j2 4AAZr鵹!#'S08mM׉)ŵUǡ!)nO1-n\5(ܟTG>TZ\czTv 0@W1 @0mRvRtdJܼR@F2"54BA6(gLkBiNfRQݼ*0<,805 g>=2R/m/5Ev7;"79n 32 %5Щ3Qƻ ȿ "WյGU QSN-·.{ʞm.WjN'Ԍ,(ڰ`Q%,.@|B O[igOx,(cQs*8!A@!Z\"ɲd vvM(hM#$=Stϑ׷8cZvF#SOLِb!: U|P*VZb֡O+SK/cPx r {/"ٽc30a,KTBf{|Ӵ3Cee\[a0ivQ0PZl3\ҳFc Pg VJ.`Uyq=xu+46\h+ m{]xϰf@>#v㰖)^V.1I퀘 [XٖuZ)`&l{٪9kGA(Uut@]T+y_*\p=fZS*X~p܅m9m* u3oԷ+m!Ig7L_buRXj}Pϸ's7 b ObK#~b-(b\sLD, dҏtfR/;ui%^qb to!PggkXAScNC}ojHb1:fKF qN?.e? qPi|v" &bKq tf"0b]>#V.QpswMcz,@[~b~Q骸U&6 [!+/}azHe2f-K8q1N֪UNSe.,7pDh>z%w497a*Ulmh"sb k75{bP]Q'Ee5wO+uUDwfljE0[w!,чɘY+[؊A}/~]hj?eAgQ<35V' ;o/,lEe. Q6pY2 X 7*S;.+־ɚAՌO.YV\3^<#;(F奱O~Q򧐝vX׳*1v0# M)FhFfDfY~߷NGi'AKq 8Ɛl}V;B&񕯍"D(Ͳ|BEN އ/t$e[CvdCL MYmƎ.TWp =xүew@c%h̨UJ5@Ҧ)pneYJ0P-"aq`7oi,!bZ+q( y9Y̻q8R e8I46eY"[RsHhز4A…o^p^7ܢrg2ݟ\;.ị% l%B`QyG\F[[\% Ơ ^8DUzUl*D5'1EW y;p56b( :7v~(MmSVn`:VB+l"o-;̸ՋL:D, fw~rF#: ߴbΘ%&ILdJq \4m.qv*ٵcDW,3,ᭅFBh@f y7Vr1-qU@!yWn-ET%hY6S2ĭR(Kl.8n4 'l#ԸF.c>cVhj#( 9v>nS(ޮ+ L>B,6:Uj,LS^@fP֕ y,he*5dȇvQbr#SAu0Z{̿ĭLV(6/zeо%r8r4#-%Rsi̳<_/CY2 >ks28{K"\1l^Ɲ&b|i!X\H`j+,B >a* l׻.pJr@-¥Uo-SXR7[d3b5CXams2}43اDF2𜟨KwEƍ/Z1Nd2n'޻NTd|Mx)?fm][~ɗv% Hߒ Ar‡1iмX4X&ʓA~.Z.GI^v|BUɘ_4Kڲ,!A;( (`Sd+GuWtq rZSW5UCMRPXL1m8|@g8̡tlm,]ʪe.4M1}v2rITĭ9~PH߆qdhFܙ7M@yUanEE1lZZ0Pq@uK^W gWA1gx-S%n}Y" "3;'0h[Co-("@}b_mANvNo࿹_wCINvGL슕h?/v|~ S~?a-XҲ+?0TZFfN/E?r1Jⱏ*{ؽ1.U.0s*xw|ᘤ$~I&]C=K0]'ܴ 9}x2i4Xd<&Ƞ6)|d3c .&N{\UԶ6]V aшPA]&ͭZsSg򷃛2*M%^M&u 7bV@/rQMfDQÇV1q8"Emw+_{&$J+;@4gO̲ ˳߁>D/ &Z;GVV^m)|R5H&6=`~ѨnYdzR`M".Eb]R}EBoo`Z&Jx ߙfj5=E" | !Y3&p ι"$g;˪$D4,5M]HJ&X`6,FTE ]+CYV]7Y]a .lͱE 4#1b3 h],tby bpX%%su[f Qnh&Q|D \HoA;`4؇!7AnKa3guBpL(o}K'Wq F \PK$̬qIN},?07)-iܳq5 m2Y (#k|gXR'?#QBo Հ!m}@.˚Arr%-]Y<ȋz&L&{[ÿ2zLc : 3-:4/}iwPch#|Vh|ƹ5rGwmf:w2RL+QqnY4شuD Vv Wj1򺶧kAR+egb*ཏK÷7@4%1M]%T%VX@$l{fvsօ ^W9~V{%S$<"; #6_=΄w}RAbV*bGSR\c4;Lf%DqKswᘀKsMF;BGt뗣 2*qVfh6_lr+$GDwv_'<{)cy9qpV\Uj=ʙlRZA"Φs_;#Hbe&!%> Pԡ!4xҔ”_DTÚnT E]7W%"휆Tv.ͿE€8)e*]{FexĶedTƝFH[Lbv @tTC|Z\pJaAVjZ;cT*)n_!%ў26Θow&f,o `,Z8+ g S78n+$.L/"k}{ Jah*Q~q7|ef+ł1Ʉ2[$c,eAiZhU}$s,G/ TYj"AbweCB̓=ux]Cl&l|4ZrPX45ah  y5`=;9e 4A ئ`yk&XQc C5M0ԳA!o*!0e68GLb` –/(\U˥%b'f bVDI>*)|2C5q!/4=[LH6%i!abEVjU2D~X/UQz>Pܾs6*bes XF ኹJ>lb8鋯A:'"xS!MT%(WB {DAn7oy\GGZ!d}Bh %A*(QG{j:d n -,$f [Bqm)"Lh UP5X[. ~+ 3׮ oaߕhTL,E"c@U]h,נcKpro2t[&y3gzK}F^$mUj1}#wcU1˿1Ífo'VdzIH[tL)ipN9Z*dآiZeQxã'fgyO] jRq To(Xٖ`2)⩑1cx< ٘z0A H򙋖g*C_A,(7!@0@[0I&уTVtNnWN ٘,.'m_*un֠q-%j6f)R ^{K+UF6T/q>6QVeUq3-D%VW[weoUM7ž#f@UZ 5(/$ei+loqi Ւ֮i5J;a3VŸW*[ZUPH8&;$4%a|lq@&oD8@oo/.R.^,?WIBgeЗ< 򦒺NT=2c!ڲ@?XcK xaV]> Lb}SjI4q9LRan}(:Ȍdy1Q0)뙈c7yn*FQ[``mf5{ &hes3=j]RYwjR)4QT*WiVhSl9bʁXj! fkLJ0;wKnT,hyBk>heWK)7=<Wjp*9 eXj7r|aPzv5vq{tS<@*!E2P ^pA6QIGgYvHKxgf!nw+LDVdWzdw ֗=HK0W^ yYww P1߷UKGmoiYNe-=n9sEJxǖ`97'NG EU8ݙƕe C 1J-pDIh%Z x?'a97}O64@tLR|G&theԔ B("d&a.Hee.q~h [0>FV/x -mt@4Z)dEY[fc?2LSASM )6ALU#$sNPZx9qnŸ4#c 4@wt0_JؓU;18#[ SFVXcyNM;*)*̷KGvA "0Kҭ,J"xӏ(jaYŘ7+\ ɔLQa2ih ;TstTD丘 Gf@{Љ?r zVفQ9n_׆v)wڋXaS|۽],q|E0!:RS= Zd/89^+kb uDWl)v8 Af{4(Yyn̰䯍{ {Z6DkRQ@  C^&jD!6q~ _@zH|FZ ՗0Qq{I|"Pz-AC6L-D)4spq`b0^c Kv,(U|EAnp6xށ\.c ^#(1TeLO%bR >JS 0eAH6ʄiWQ4;eTw}xD7 3;'%s~Ҟhܫx};&2}יnnљP+, qe)O0C men6Zl çDRT2|nʎg~ s~`/QUa_{Nߘ3 ADD] 5w `N AV(Ķi5NۻBO'~mt1(\BPM7uF!md ,rlآ^WF'v52PZ܈~'0ZV6P3,K">6[?b/s;vr^QK ZU;xT^LKg,n4/Ҋ(I9 V wC֠*Zp #O5zn@[`)w*K5͙nBK0k9̍5ey.~>b zqZC|Oٖg[3h |3n|Jpnr>ʝ?+*7VPLMb[Qݍ2,e ^ 7:$Di-I:{ڢRS`ʭݞd?]U/ Y8G+}٪Ke ɮPGI"ɭ `4Ɇn8`wlH3% l=V]$0B#N_c/aDĠS4J3z`WeCEwTb9|o1E/bw"v=q7:i.CCheEŰ('sMr֮4"`d{ogԣj7b kR@b/u0(f&ں7ĺ3wQ4y%,4_I[MKS#' K;#;a(:ebJs~WCIxVa]O7o8 Id +/۰'`nMO1I\> 79{Nu7@IPttn,4qW@UZ" v@{>c)u|MȽWI [N"#V>"AKS!vfzK8Cؗɦ[xBRaa5ŹLs`˖!PÝQK'AwCݧs&j)[Y}ٖ2O1jA%:*eKP^}sƎ* + =Rh(}"!>l Zw>e#Er+,Os|^RF A/-=$g,ݡ~1l40Bd)m'Aߚ1J,.kL>E' c~o o0\d{_$טd'\N f@U@{$X 8{'5?hcn5чJ>e/D{6U;fW9XG}[!q13a@,6W3whdy!fQiw*XEx_XfM A`̢\Y,qzc,}{&vndv˫ۂTļbŃ._E˗J2~^b8e203E@EA@.Y'&_]i< qy|a8z#6HRŜc#4/xPJyy7`1t=UCkaϸZpfDpG?A2$h(A5v67 NUocEUy{m%Mȗg0^<%"Ҹķ0UhUe;ZqqF$n}s9J(tV(a9\;I 7p:1vkYFmf:+w)N٥v/V+Lʿ3ATo&>IH&f誶*\sY;k[Yг1"& `Y{pK|EWe;%V4Z*Tۇ1b/"pA AKja q͌.j9U1[BG8#,d- sZLpt`oiU> )&Y9!.,RwRYPXC"FXlxln9۩3Y< je,e+6"v]۸6V>p#q7M|Z& M'i4xѭExq1PѵʉQ6hN&OeӦA"hd0ea1 mҎZk %j=Wt RR? G"b*Km~hW1/e9|sNnOZy UQV8_ʃQ['y$1,A98`rUX~܍@A,AAsYVjߘ7.i\L˩+e"HBhQh*{֫{/Yj*SM!dQzc:0ˌ9`~^ 56e&HVaX*uor;M*, hYi̻*0^a#ܫDފN: 8!x+k Xc*8>S0{\ Zô6.XP. B`sCZ?(ca K0K 1:ZE[.1,^;&:x*2{%; robTohV+g>zCNbmeawU+K0b8|=g*d4=ĨTRG~bj*) oAi0\EK 6"Tþ"l 4- vN>LA*{%ADXPDwao0Y}r0GȏZfw?Mܰ.iw.( S& 9UPo.sٜKo/><$UFx%071>F6KHq Dz\pC厭w% .*%`x8nұ,݌tTBext.rE.1vS UdA z4\k*LA.h{?IGDt)4XnBlĺvg},UܼKn̽^tgLnxJ9^3l"$aȁ LM/h;ʦz+%l5 ۫( ӵ8 z[.1uW8^ZoKswXKLb/ q"D= xD\b^}VWYL+dV̦h /p/,BDwTzo{!՝o苓f#kf࠱>ABl](ɨ' CfjhYi5aB A/1q )E(o2?Ɗ`{>6"Vdlt֮*x:Q`6dіZĿDW3z]#`4q*O䕝:i@Pr4xw-^+\9yA̴Y9&܉t +U_XPhq J dœ[_:Lo|!գ)kO4/2z0?!wO8o [>(jbT7/GcdGEc Md75!v BF<1,!*"3LtJK%NzBu OYG1bH{Kpeo%o a ʼney06&Lp5 hP^cXU{?1qLeÊ#}0[͑XWT<#+%K\SH0_I$UMҷAt#5<߆t >J=%SG#A>Jt*#m/D0O ހ~п ,W_P#H`.%-ۿL _+%7/*dZgYA~N|,H+3ƩO7~na0aWZZӱ>.6w@ TVm }BGDx%)dV4&0 f,4Khulpb\ӱ 3*Q0iUO([FO;NIED BII0_r1%l%o1v"09.!pkj4XRXpѝ|+6prŘn] n^R# U<!#(8Hiem - [N`J.T҉S" ROhk %8 u >)geQx`.q,qZ"i/e0>UqNJ\x @+rհnahG7yB!(D(̳-X'4f9[6;YP̦t35<]*%[ɇ]@nOD6#Nҽ^0yE^oh0`e;&-@yd(tx)1p'`R^E-5{Ga[_-9TեxL+m8ipV\rXqxE.ձwNupܶ9ycu)فR9:ҨMވj1Yj*!u]$\-l /£y\1i撬=Ls>Qiw`fT0dШimiX&e8TUv"( Eȯ#cpN,z0n2ZwYZP*A oga`@ Q/i -@蝪FZDM©_0 :\ΦuM\ E6V8ք GB@l|ah+Ȱ*Q'lE^fop] sYsnarX" CR%8h 䔥neIp3F0?0 hyv!^fji4eNK[x8Gj f%af/?c/ZK mW?K9A]!fvq-{h4(Q @+ZG嗟v\*,fEl^&8q[LP"rlj4 XZ;B"US l>).&. \P{)pfx2>/¬r/xx/F%Q_L|?!Fc|U_ n](N|B#P86Y蛁#agAEA18A)QxJGr.0T3W*̣]땊)*W IV]w"]Y .VS.9yT(հe3[ķc wTQ!|Nڌ\ZKxE :'v"ۊkUE3F\ g'uk,Q{45JᎾp*4J7rCe./5.a–-OlNF#+Ǹ*Ih+4{ 1%zhS<˛--,[9=S1q12˷`Hsc0S\ U}Y>X.Q)(7+5)Jw3eRkAv`s[@8weg\@5 -L@ o /1pV{Vrhde &Z b{.uu(Ec 72ؖdHg&4S-Ūyfd܊hhrܸw !ouZюoU2;`ٕX+rJRZ=Մُh6\@vąMψ:C0qIP"X9 5~.YT#DS_4\ :|8"OEs; Z*ٰ(G6gBPKߐ|{FdP3JI^ OxfeMܮG@oQ?vnR (cH ؐXm@~@Ǡ¶!EL7=VPUwx `/~1ZsL+F^* (t$SDKXwQ!aPM zŗvpj%=!h8%2FfzEiYBzO &bt hUñ#\+*d/+?nPap!N@F.ɖ{ a(%Ǚ B\b&t}gii[lG&6h<D;~.LӔ|dQ,;X4^kQl̉@5sXv0\#c!(mjYJB<76ŵ1U|. ZKffx3HD9) Icc.#H1e) ֡ܬ$]|O!x3r6c.m&88Hܗ+Dj@о&{0EQJiT8E QM/&g[oFO.[(jX$w$ݰ9:XMҸ!n%U-A@ ƒ6@~ |1H06T^ҎKGh ʦx~ݡ(]Z-Vbfod0'ZWlsC*4)8ahP#I%D\m=4 +>VM'ZHUFKwy](BQk - .2ϔT axUvz.YWX9ʨsacnC@385)_#ꇡNB0]Aġ,=&40 `'qolø ~+ R-]Q*OG4)!⢓B`= JwSU}پ,Xbcn\Me7'VL)bōm!>,ߊ_TA99P)Uce\STF=KpA FB,Xk[.qfgҟqݸjj: >b2m& [;z,0a;b D?3xhX7bʗ%p4{;#._15߷.T;oQq"'kaP^HװE#]F]V=t[)l=%e 3qnz/4; Uh JtFĺS[fV*,XF3Z@Rk4!ayr?˨9.ha a Jހb7<_اH ,uQ2y ;֭C\wz!106,F{y!ώP7D*w+bzIrOܵqK}6dDLO %,Sz')a SK2+%Ĥ7 *%5AЇ k EP8hdR[8-5Ƃ#d:dإJ卛{:[s{O":(d+ R]d] %Up7(EGs]#dǁ%7B›Hdp/w_ kjnY N1򂶷xH׶0 ɿy.W^y px{>!֤mmzT.wuM©!r xw^ݒKUT.5V0Ʌ aq w%Fyfj 7mK Kt'3UL.5,ɿ~mbĜMͳNp=1+f5Chbw\LȆ%$RRM#..9R炇?E!Db(;ɛٹ+x~ѱ&f#׉IND40JD[|/ /N V5T>%4k&]YcnR\,2p+QcK2<nW,̡RȬI6ylu$ |DmfK)-МSeA_æi;?iq&Vjterxc]q,YP\K`'Ld"&l~N +9uCaRmލR&oFpTFW١Z`]۟$uen"e~MYu}@{PmB\:B5( SDgR..)soc`"fy)^P!P:f3%`^J1jwHQ@*a _snpl>eCT S+'{.V U(1PXl@2AZ-|9yiW #O %w3k6afjJ;cM0yJ>FlQAPVS-賠86ja@$Z7eKf:?!k * xB cs̽UJ%+d|M,@ 8{scmÈW-65 KufrԸ K"(!^y?FeW@`lf~zYSg[T3f7@nez]C.0@]r,vX*w2 fj+tUC1^x{Ǹb;OB qG,ޣDEzj-`&lwءy ?gAĴ Cp゠#l 7g1{XU0.m7;0U\.RβUU0 [[Fp\"9@QqAlLveL兘-a+X ~O$Kdǖ:n!WhL؈-֏ܻ/\qR͌ÌZ8}I-jƘ`eK07!% /UɚnT",o(p~P-г&.~cJ#"@&_, ̂°ަe FT 9L o2p 2P+d`hg{vo_1-~cO1TOw K,L栂ޕ&D@u.٬ƊU.}ȚV4dU[pJ|ҖU dX¨̧Yȷ-UhDvѳaR0Y%obQT^pGȈ-K(Jdv -` ûw+D^ NϕR!M_IWGRЂ{ M%jNkFR[;G3 PwZ +/aEu>E#dyVf xXov7$%)ڹG)0zj#AjY mxFū D.2#"vp/p6=s(ܮQ悆X`m7XJȇgq`Ӄmka ̶M)RB`[ &-%kTӪ10q6 0z+#+f#A|$o%C?؏TWLXx؎TY6|Ԫa0@HH0Td ZVeArQ|m"4 >me,5; +DB(lR[̯$ P )BCD\`Mwa97b(&3h[tԁeQx(\$b#Bs 095BEуnWS8)|D=tЕPKh]-MXP2f#Rp:V's0vx<&=uiو# mm  s7M16` KdV(`ef<^ҸL[\"]1ޠ|0<^UycG$9?bˈXrbjhx @RsWKޭ6ЃW,pWf|j KU;\Y^a! M(.Xc*86 er+U'F_<]=q\30C Ҍ9.,Bs 2R͌J4 ǵHÃFYPGÌ3^̗`z3n l I4m̃v7Ohdr5* E& 5`_Mie3%hɉp1Z(k@*E'^<+uɉ]pCL[Y%TlDUt ;V']kp0]& \D(:&iu瘿Hmy/%^& ei-V,))> Z?e[4!ݓb)" W{+eӕ5y2,w,W9zK/B{f­|6 F&p+z{P鵗Rl<3{z*Ux+qa|"ysBu@zYD,9^K5K}P-艔K>f躋y/#2Gdqn` ^ )Kaǔ) \WB-90 ys2[Lfc|H*̭@IK95!t'4L2EM!21 kj92 @L̕ͅv0ӄ11|UpQ79En`1,g'yx (K k!0ґ:ROҞ{Ѐ0md=jEdۮ1 B%j Utn]^cmԤL5,‹cl5Z muzZ wK7uX 1mBO+k0q6L7V` sNa=HC:a4BÁCݿeͿ)y-4F@ H9Y,ړ!|  ,ض\j`(Ja}NNQ t,@q]EBPF.ES-ҡFF4{1-GSIjfuQz|3#3j.Fc8z1hGst옩(.UU 3xc v%,&UxC +B6=ܾOd802›KnnAo}XgF͢cϽ/N?1R>-+u^ ȍxUnC`UQvCw;_pT-0|~ 85[r>V7Jm{>(Ÿ%DSfŨ~ Dq$@ ˂pG8eU&6 xcbC6Y%%%0p!mh+G@a-P2-=ڵ+Mvek,H!*gy3ʀ2r% 3^B6(wP= 4)G4TZEH3V<[A@#!@>)vxa'/cmJ(Pa8^c7}" ʯ+9[/P\@@#PV]QmObC)`ܡ'}PŏiQ'6;h4kY%̳1"![18eq`áYi.D>yFg.Z?aIu`}B_yeVA 7UKA9ؠΎuN.a! *iAM-*F LiĬvܵ~vm>NH`KeSFY3B*cN2F#sw˖䬹AeYZ R\KX{׬v$.k ʿ3Ef֦'W=0T_Kck^n-ZB0\RJ ReA%u5P ɫ ߃ kɹ_l m p,edgS{m{s ,hzki͡y-7͑ m+=)xSp{gG`XJcU9fhbL@4. ng\fgţl~&,&6E-n,&B LejQ Fy4TZ6_RR`t^5 4i棣}9鰘"O,f?LYA˜y]) ]+0gQBI FqU/]ыx0zL)%P3Ig̼.) 12W%\j~JٚK mZal٧a @jWC/71 L+eU,<L5dR,69ơ+Zn? rȌ.+)2CAR#;25< @;=1O67:Y"~5I%]8UċBk0ǥv&Wj8PXJ,68HY;U~SGJ~dꩤyEL֒T/yd ŰǴh18\Rf$Ӝ~V 4l֌*6é<}"u(c xavf ۹:%% %؏sf1#1!oZ_8\`T֮Xg&lC`ULP9MLFt}lk\@+Mʈ1x(K3b-&Ҕj6@`!QV.Xl4>Ax啇6URLD6r7KkԲM/u TDA/k6@Q5QY a*6Xg +nԠ">pK3Q.8qMl.*/G0O`jyߋF[W.<\Tqh8MHY#7]ŀi4"a;qG Nw;%F6FXSWuf1_ht+X9IzJNjS`H+meyb7 1^I_ Zns/ ;-2 Jlo.30.w=_5R(Wph袹L:/1_k6h-# &4@s?PF0R(s'"8NLq5TSHMʱV ᴄ Zv%8jxQ*E,(9EjhةH m7x'.L@lpZ`\Qa,Y,65k6g^ˤe`K>'.Vrfq LJ М6isV*}0Q;Eo)W̒jзm wJ-0%w?A tj7S$q^if.LF  Ma!0ۺOИtèXZ$)g v}m? *>e\Ee>3V>PU߂)v0]ַ0#L9WٌTBq[m_|{㢚Jȵ T[e 8VܬjR^ TF4 hdlcdp b[j^^%L7pzfQ>udAc~tPc3TA¯n{Q2q~ 9VK:T@aL/pL0,L:eo!* Jh.jR󽌤n@>%%%TA.23<Ŏ Vn?fHm1dSLüe^Ⱥ+p2(cظ4myaaZh^:CI䀛unr4$6֌;FXuBzc?3FǵyHr=6?*=Vd'## =1 JeB[oJ(Pji&ܥ[dFTyDP!:S:[Hp@t!?drߕJnʌÍ1=Qh'Q>VXj":ˇTXd@HfX Q7+!~:'J1Fd̞` )hӥ%* )fO  ,%j\-~Fzad3/KYEky'.˦4%\/.<U*4)enlX..>hip&Y@ɔ+TUƌqTńܭm xauyn8ͽ՚fƽRiO7cN <N\O*R\W剪6S^;p+G33FEb{YXU|ehG<" v(T¥1J]!w"81FjUN#-;́?U 2Ytw&#)` $I.@4\JhʔpVXN&Ռ!~ C MC}+
Linux 4gvps.4gvps.com 3.10.0-1127.18.2.vz7.163.46 #1 SMP Fri Nov 20 21:47:55 MSK 2020 x86_64
  SOFT : Apache PHP : 7.4.33
/proc/self/root/usr/share/mysql-test/r/
38.135.39.45

 
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACT ]
+FILE +DIR
1st.result 0.472 KB -rw-r--r-- 2021-01-05 10:19 R E G D
alias.result 13.417 KB -rw-r--r-- 2021-01-05 10:19 R E G D
almost_full.result 1.112 KB -rw-r--r-- 2021-01-05 10:19 R E G D
alter_table-big.result 3.119 KB -rw-r--r-- 2021-01-05 10:19 R E G D
alter_table.result 108.406 KB -rw-r--r-- 2021-01-05 10:19 R E G D
analyze.result 2.207 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ansi.result 1.144 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive-big.result 0.602 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive.result 525.381 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive_bitfield.result 4.261 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive_debug.result 0.347 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive_gis.result 23.132 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive_no_symlink.result 0.861 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive_plugin.result 0.53 KB -rw-r--r-- 2021-01-05 10:19 R E G D
archive_symlink.result 2.068 KB -rw-r--r-- 2021-01-05 10:19 R E G D
audit_plugin.result 0.727 KB -rw-r--r-- 2021-01-05 10:19 R E G D
auth_rpl.result 1.846 KB -rw-r--r-- 2021-01-05 10:19 R E G D
auto_increment.result 11.723 KB -rw-r--r-- 2021-01-05 10:19 R E G D
backup.result 4.293 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bench_count_distinct.result 0.451 KB -rw-r--r-- 2021-01-05 10:19 R E G D
big_test.require 0.017 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bigint.result 20.723 KB -rw-r--r-- 2021-01-05 10:19 R E G D
binary.result 5.674 KB -rw-r--r-- 2021-01-05 10:19 R E G D
binary_to_hex.result 5.87 KB -rw-r--r-- 2021-01-05 10:19 R E G D
binlog_tx_isolation.result 1.707 KB -rw-r--r-- 2021-01-05 10:19 R E G D
blackhole.result 0.599 KB -rw-r--r-- 2021-01-05 10:19 R E G D
blackhole_plugin.result 0.558 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bool.result 2.56 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bootstrap.result 0.261 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug12427262.result 1.864 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug12969156.result 0.93 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug17076131.result 0.314 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug33509.result 2.306 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug39022.result 1.199 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug46080.result 0.653 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug46261.result 0.373 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug46760.result 1.259 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug47671.result 0.28 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bug58669.result 0.469 KB -rw-r--r-- 2021-01-05 10:19 R E G D
bulk_replace.result 0.274 KB -rw-r--r-- 2021-01-05 10:19 R E G D
cache_innodb.result 5.419 KB -rw-r--r-- 2021-01-05 10:19 R E G D
case.result 10.062 KB -rw-r--r-- 2021-01-05 10:19 R E G D
case_insensitive_file_system.require 0.045 KB -rw-r--r-- 2021-01-05 10:19 R E G D
case_sensitive_file_system.require 0.046 KB -rw-r--r-- 2021-01-05 10:19 R E G D
cast.result 15.755 KB -rw-r--r-- 2021-01-05 10:19 R E G D
change_user.result 3.31 KB -rw-r--r-- 2021-01-05 10:19 R E G D
check.result 1.423 KB -rw-r--r-- 2021-01-05 10:19 R E G D
check_auto_permission.result 0.245 KB -rw-r--r-- 2021-01-05 10:19 R E G D
check_var_limit.require 0.008 KB -rw-r--r-- 2021-01-05 10:19 R E G D
client_xml.result 2.376 KB -rw-r--r-- 2021-01-05 10:19 R E G D
comment_column.result 140.568 KB -rw-r--r-- 2021-01-05 10:19 R E G D
comment_column2.result 355.679 KB -rw-r--r-- 2021-01-05 10:19 R E G D
comment_index.result 173.026 KB -rw-r--r-- 2021-01-05 10:19 R E G D
comment_table.result 28.718 KB -rw-r--r-- 2021-01-05 10:19 R E G D
comments.result 2.337 KB -rw-r--r-- 2021-01-05 10:19 R E G D
commit.result 13.321 KB -rw-r--r-- 2021-01-05 10:19 R E G D
commit_1innodb.result 19.194 KB -rw-r--r-- 2021-01-05 10:19 R E G D
compare.result 3.17 KB -rw-r--r-- 2021-01-05 10:19 R E G D
compress.result 56.502 KB -rw-r--r-- 2021-01-05 10:19 R E G D
concurrent_innodb_safelog.result 31.888 KB -rw-r--r-- 2021-01-05 10:19 R E G D
concurrent_innodb_unsafelog.result 31.614 KB -rw-r--r-- 2021-01-05 10:19 R E G D
connect.result 12.747 KB -rw-r--r-- 2021-01-05 10:19 R E G D
connect_debug.result 1.481 KB -rw-r--r-- 2021-01-05 10:19 R E G D
consistent_snapshot.result 1.144 KB -rw-r--r-- 2021-01-05 10:19 R E G D
constraints.result 2.551 KB -rw-r--r-- 2021-01-05 10:19 R E G D
count_distinct.result 7.89 KB -rw-r--r-- 2021-01-05 10:19 R E G D
count_distinct2.result 2.215 KB -rw-r--r-- 2021-01-05 10:19 R E G D
count_distinct3.result 0.271 KB -rw-r--r-- 2021-01-05 10:19 R E G D
create-big.result 7.604 KB -rw-r--r-- 2021-01-05 10:19 R E G D
create.result 147.088 KB -rw-r--r-- 2021-01-05 10:19 R E G D
create_not_windows.result 0.938 KB -rw-r--r-- 2021-01-05 10:19 R E G D
create_select_tmp.result 0.826 KB -rw-r--r-- 2021-01-05 10:19 R E G D
csv.result 58.878 KB -rw-r--r-- 2021-01-05 10:19 R E G D
csv_alter_table.result 1.168 KB -rw-r--r-- 2021-01-05 10:19 R E G D
csv_not_null.result 1.752 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_ascii.result 2.107 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_big5.result 33.848 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_binary.result 82.341 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_collate.result 13.504 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_cp1250_ch.result 21.882 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_cp1251.result 96.091 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_cp932.result 0.973 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_cp932_binlog_row.result 0.593 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_cp932_binlog_stm.result 251.22 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_create.result 3.12 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_errors.result 1.662 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_eucjpms.result 400.215 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_euckr.result 434.587 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_filename.result 0.316 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_filesystem.result 0.333 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_gb2312.result 33.291 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_gbk.result 49.631 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_gbk_binlog.result 0.632 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_hebrew.result 0.248 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_latin1.result 118.674 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_latin1_de.result 15.738 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_latin2.result 13.319 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_latin2_ch.result 25.112 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_ldml.result 28.05 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_like_range.result 80.895 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_many.result 42.672 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_mb.result 2.127 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_recoding.result 9.598 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_sjis.result 195.68 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_tis620.result 100.449 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_uca.result 154.97 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_ucs.result 142.403 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_ucs2_def.result 1.055 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_ujis.result 364.904 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_ujis_ucs2.result 548.586 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf16.result 44.957 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf16_def.result 0.267 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf16_uca.result 72.284 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf16le.result 50.536 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf32.result 48.046 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf32_uca.result 75.105 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf8.result 167.063 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf8mb4.result 80.382 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf8mb4_heap.result 72.209 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf8mb4_innodb.result 74.624 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf8mb4_myisam.result 74.628 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ctype_utf8mb4_uca.result 38.815 KB -rw-r--r-- 2021-01-05 10:19 R E G D
date_formats.result 24.959 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ddl_i18n_koi8r.result 113.334 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ddl_i18n_utf8.result 116.354 KB -rw-r--r-- 2021-01-05 10:19 R E G D
deadlock_innodb.result 2.354 KB -rw-r--r-- 2021-01-05 10:19 R E G D
debug_sync.result 11.854 KB -rw-r--r-- 2021-01-05 10:19 R E G D
debug_sync2.result 0.424 KB -rw-r--r-- 2021-01-05 10:19 R E G D
default.result 8.018 KB -rw-r--r-- 2021-01-05 10:19 R E G D
delayed.result 17.703 KB -rw-r--r-- 2021-01-05 10:19 R E G D
delete.result 15.996 KB -rw-r--r-- 2021-01-05 10:19 R E G D
deprecated_features.result 2.029 KB -rw-r--r-- 2021-01-05 10:19 R E G D
derived.result 78.604 KB -rw-r--r-- 2021-01-05 10:19 R E G D
dirty_close.result 0.337 KB -rw-r--r-- 2021-01-05 10:19 R E G D
disabled_replication.result 3.008 KB -rw-r--r-- 2021-01-05 10:19 R E G D
disconnect_on_expired_password_default.result 1.399 KB -rw-r--r-- 2021-01-05 10:19 R E G D
disconnect_on_expired_password_off.result 1.359 KB -rw-r--r-- 2021-01-05 10:19 R E G D
distinct.result 30.849 KB -rw-r--r-- 2021-01-05 10:19 R E G D
drop-no_root.result 0.443 KB -rw-r--r-- 2021-01-05 10:19 R E G D
drop.result 5.734 KB -rw-r--r-- 2021-01-05 10:19 R E G D
drop_debug.result 0.474 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ds_mrr-big.result 2.145 KB -rw-r--r-- 2021-01-05 10:19 R E G D
dynamic_tracing.result 0.794 KB -rw-r--r-- 2021-01-05 10:19 R E G D
empty_table.result 0.224 KB -rw-r--r-- 2021-01-05 10:19 R E G D
enable_cleartext_plugin.result 1.349 KB -rw-r--r-- 2021-01-05 10:19 R E G D
endspace.result 6.612 KB -rw-r--r-- 2021-01-05 10:19 R E G D
eq_range_idx_stat.result 4.024 KB -rw-r--r-- 2021-01-05 10:19 R E G D
error_simulation.result 3.229 KB -rw-r--r-- 2021-01-05 10:19 R E G D
errors.result 5.929 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_1.result 22.185 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_2.result 17.229 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_bugs.result 37.353 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_embedded.result 0.084 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_grant.result 10.332 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_logs_tests.result 2.369 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_microsec.result 0.791 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_restart.result 4.148 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_scheduling.result 3.111 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_stress.result 2.387 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_time_zone.result 5.401 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_trans.result 3.494 KB -rw-r--r-- 2021-01-05 10:19 R E G D
events_trans_notembedded.result 1.372 KB -rw-r--r-- 2021-01-05 10:19 R E G D
execution_constants.result 1.046 KB -rw-r--r-- 2021-01-05 10:19 R E G D
explain.result 28.334 KB -rw-r--r-- 2021-01-05 10:19 R E G D
explain_json_all.result 63.132 KB -rw-r--r-- 2021-01-05 10:19 R E G D
explain_json_none.result 64.698 KB -rw-r--r-- 2021-01-05 10:19 R E G D
file_contents.result 0.177 KB -rw-r--r-- 2021-01-05 10:19 R E G D
filesort_debug.result 2.793 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fix_priv_tables.result 1.303 KB -rw-r--r-- 2021-01-05 10:19 R E G D
flush.result 13.751 KB -rw-r--r-- 2021-01-05 10:19 R E G D
flush2.result 0.861 KB -rw-r--r-- 2021-01-05 10:19 R E G D
flush_block_commit.result 1.47 KB -rw-r--r-- 2021-01-05 10:19 R E G D
flush_block_commit_notembedded.result 0.752 KB -rw-r--r-- 2021-01-05 10:19 R E G D
flush_read_lock.result 72.072 KB -rw-r--r-- 2021-01-05 10:19 R E G D
flush_read_lock_kill.result 1.121 KB -rw-r--r-- 2021-01-05 10:19 R E G D
flush_table.result 11.224 KB -rw-r--r-- 2021-01-05 10:19 R E G D
foreign_key.result 3.335 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext.result 28.717 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext2.result 7.545 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext3.result 0.527 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_cache.result 2.674 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_distinct.result 1.248 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_left_join.result 4.002 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_multi.result 0.748 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_order_by.result 5.829 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_plugin.result 0.224 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_update.result 0.908 KB -rw-r--r-- 2021-01-05 10:19 R E G D
fulltext_var.result 1.3 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_aes.result 12.779 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_aes_cfb1.result 4.504 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_aes_cfb128.result 4.566 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_aes_cfb8.result 4.504 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_aes_misc.result 8.281 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_aes_ofb.result 4.473 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_analyse.result 19.011 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_compress.result 4.84 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_concat.result 4.029 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_crypt.result 4.374 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_date_add.result 3.623 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_default.result 1.193 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_des_encrypt.result 0.994 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_digest.result 121.479 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_encrypt.result 10.325 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_encrypt_nossl.result 4.213 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_encrypt_ucs2.result 0.747 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_equal.result 1.269 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_gconcat.result 48.525 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_group.result 54.636 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_group_innodb.result 5.119 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_group_innodb_16k.result 0.531 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_if.result 6.051 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_in_all.result 27.624 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_in_icp.result 27.263 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_in_icp_mrr.result 27.567 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_in_mrr.result 27.286 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_in_mrr_cost.result 27.006 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_in_none.result 26.958 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_isnull.result 0.808 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_like.result 4.451 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_math.result 28.063 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_misc.result 28.198 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_op.result 1.933 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_regexp.result 4.367 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_rollback.result 12.444 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_sapdb.result 12.376 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_set.result 8.508 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_str.result 157.745 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_str_debug.result 0.341 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_str_no_ps.result 1.065 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_system.result 2.626 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_test.result 13.442 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_time.result 67.367 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_timestamp.result 0.506 KB -rw-r--r-- 2021-01-05 10:19 R E G D
func_weight_string.result 3.438 KB -rw-r--r-- 2021-01-05 10:19 R E G D
function_defaults.result 109.227 KB -rw-r--r-- 2021-01-05 10:19 R E G D
function_defaults_notembedded.result 6.385 KB -rw-r--r-- 2021-01-05 10:19 R E G D
gcc296.result 0.516 KB -rw-r--r-- 2021-01-05 10:19 R E G D
get_diagnostics.result 24.962 KB -rw-r--r-- 2021-01-05 10:19 R E G D
gis-debug.result 16.127 KB -rw-r--r-- 2021-01-05 10:19 R E G D
gis-precise.result 28.338 KB -rw-r--r-- 2021-01-05 10:19 R E G D
gis-rt-precise.result 1.863 KB -rw-r--r-- 2021-01-05 10:19 R E G D
gis-rtree.result 78.355 KB -rw-r--r-- 2021-01-05 10:19 R E G D
gis.result 58.529 KB -rw-r--r-- 2021-01-05 10:19 R E G D
grant.result 95.951 KB -rw-r--r-- 2021-01-05 10:19 R E G D
grant2.result 31.124 KB -rw-r--r-- 2021-01-05 10:19 R E G D
grant3.result 7.147 KB -rw-r--r-- 2021-01-05 10:19 R E G D
grant4.result 8.854 KB -rw-r--r-- 2021-01-05 10:19 R E G D
grant_cache.result 5.615 KB -rw-r--r-- 2021-01-05 10:19 R E G D
grant_explain_non_select.result 9.504 KB -rw-r--r-- 2021-01-05 10:19 R E G D
grant_lowercase_fs.result 0.544 KB -rw-r--r-- 2021-01-05 10:19 R E G D
greedy_optimizer.result 592.802 KB -rw-r--r-- 2021-01-05 10:19 R E G D
greedy_search.result 12.423 KB -rw-r--r-- 2021-01-05 10:19 R E G D
group_by.result 84.602 KB -rw-r--r-- 2021-01-05 10:19 R E G D
group_min_max.result 115.333 KB -rw-r--r-- 2021-01-05 10:19 R E G D
group_min_max_innodb.result 17.521 KB -rw-r--r-- 2021-01-05 10:19 R E G D
handler_innodb.result 40.725 KB -rw-r--r-- 2021-01-05 10:19 R E G D
handler_myisam.result 44.62 KB -rw-r--r-- 2021-01-05 10:19 R E G D
handler_read_last.result 1.151 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_big5.require 0.077 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_binlog_format_mixed.require 0.039 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_binlog_format_row.require 0.037 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_binlog_format_statement.require 0.043 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_binlog_rows_query.require 0.052 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_compress.require 0.037 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_cp1250_ch.require 0.077 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_cp1251.require 0.082 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_cp866.require 0.08 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_cp932.require 0.081 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_crypt.require 0.034 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_debug.require 0.008 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_debug_sync.require 0.013 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_eucjpms.require 0.085 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_euckr.require 0.079 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_gb2312.require 0.082 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_gbk.require 0.076 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_geometry.require 0.037 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_koi8r.require 0.079 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_latin2_ch.require 0.076 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_local_infile.require 0.035 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_log_bin.require 0.03 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_met_timezone.require 0.042 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_moscow_leap_timezone.require 0.045 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_mysql_upgrade.result 0.021 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_ndb_extra.require 0.014 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_ndbapi_examples.require 0.019 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_nodebug.require 0.008 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_optimizer_switch.require 0.019 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_outfile.require 0.054 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_partition.require 0.041 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_perror.require 0.014 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_profiling.require 0.038 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_query_cache.require 0.04 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_sjis.require 0.079 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_ssl.require 0.032 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_ssl_is_yes_or_disabled_only.require 0.042 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_symlink.require 0.036 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_tis620.require 0.079 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_ucs2.require 0.078 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_ujis.require 0.079 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_utf16.require 0.08 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_utf32.require 0.08 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_utf8.require 0.078 KB -rw-r--r-- 2021-01-05 10:19 R E G D
have_utf8mb4.require 0.084 KB -rw-r--r-- 2021-01-05 10:19 R E G D
having.result 19.716 KB -rw-r--r-- 2021-01-05 10:19 R E G D
heap.result 20.864 KB -rw-r--r-- 2021-01-05 10:19 R E G D
heap_auto_increment.result 0.873 KB -rw-r--r-- 2021-01-05 10:19 R E G D
heap_btree.result 9.322 KB -rw-r--r-- 2021-01-05 10:19 R E G D
heap_hash.result 14.374 KB -rw-r--r-- 2021-01-05 10:19 R E G D
help.result 6.465 KB -rw-r--r-- 2021-01-05 10:19 R E G D
host_cache_size_functionality.result 3.319 KB -rw-r--r-- 2021-01-05 10:19 R E G D
implicit_char_to_num_conversion.result 6.438 KB -rw-r--r-- 2021-01-05 10:19 R E G D
implicit_commit.result 17.715 KB -rw-r--r-- 2021-01-05 10:19 R E G D
import_schema_mismatch.result 0.525 KB -rw-r--r-- 2021-01-05 10:19 R E G D
index_merge_delete.result 25.876 KB -rw-r--r-- 2021-01-05 10:19 R E G D
index_merge_innodb.result 61.635 KB -rw-r--r-- 2021-01-05 10:19 R E G D
index_merge_insert-and-replace.result 12.55 KB -rw-r--r-- 2021-01-05 10:19 R E G D
index_merge_intersect_dml.result 4.958 KB -rw-r--r-- 2021-01-05 10:19 R E G D
index_merge_myisam.result 73.481 KB -rw-r--r-- 2021-01-05 10:19 R E G D
index_merge_update.result 16.413 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema-big.result 2.81 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema.result 87.982 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema_chmod.result 0.178 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema_db.result 9.294 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema_inno.result 4.331 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema_parameters.result 22.11 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema_part.result 9.715 KB -rw-r--r-- 2021-01-05 10:19 R E G D
information_schema_routines.result 28.636 KB -rw-r--r-- 2021-01-05 10:19 R E G D
init_connect.result 2.526 KB -rw-r--r-- 2021-01-05 10:19 R E G D
init_file.result 0.315 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_explain_json_non_select_all.result 220.923 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_explain_json_non_select_none.result 225.147 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_explain_non_select_all.result 119.149 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_explain_non_select_none.result 119.029 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_icp.result 26.728 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_icp_all.result 26.791 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_icp_none.result 26.632 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_ignore_builtin.result 0.346 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_log_file_size_functionality.result 2.791 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mrr.result 20.302 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mrr_all.result 20.467 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mrr_cost.result 20.269 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mrr_cost_all.result 20.434 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mrr_cost_icp.result 20.377 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mrr_icp.result 20.41 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mrr_none.result 20.221 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mysql_lock.result 5.516 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mysql_lock2.result 21.268 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_mysql_sync.result 17.646 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_pk_extension_off.result 14.063 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_pk_extension_on.result 14.33 KB -rw-r--r-- 2021-01-05 10:19 R E G D
innodb_recovery_with_upper_case_names.result 1.211 KB -rw-r--r-- 2021-01-05 10:19 R E G D
insert.result 26.414 KB -rw-r--r-- 2021-01-05 10:19 R E G D
insert_debug.result 1.294 KB -rw-r--r-- 2021-01-05 10:19 R E G D
insert_notembedded.result 5.718 KB -rw-r--r-- 2021-01-05 10:19 R E G D
insert_select.result 14.044 KB -rw-r--r-- 2021-01-05 10:19 R E G D
insert_update.result 9.641 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ipv4_as_ipv6.result 21.693 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ipv6.result 12.488 KB -rw-r--r-- 2021-01-05 10:19 R E G D
is_debug_build.require 0.031 KB -rw-r--r-- 2021-01-05 10:19 R E G D
is_embedded.require 0.016 KB -rw-r--r-- 2021-01-05 10:19 R E G D
isam.result 15.653 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join.result 46.837 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_cache_bka.result 88.084 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_cache_bka_nixbnl.result 87.375 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_cache_bkaunique.result 88.538 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_cache_bnl.result 86.259 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_cache_nojb.result 85.375 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_crash.result 4.587 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_nested.result 62.759 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_nested_bka.result 66.917 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_nested_bka_nixbnl.result 63.953 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_optimizer.result 2.536 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_outer.result 63.986 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_outer_bka.result 64.278 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_outer_bka_nixbnl.result 62.568 KB -rw-r--r-- 2021-01-05 10:19 R E G D
join_outer_innodb.result 1.855 KB -rw-r--r-- 2021-01-05 10:19 R E G D
key.result 20.978 KB -rw-r--r-- 2021-01-05 10:19 R E G D
key_cache.result 10.908 KB -rw-r--r-- 2021-01-05 10:19 R E G D
key_diff.result 0.833 KB -rw-r--r-- 2021-01-05 10:19 R E G D
key_primary.result 0.65 KB -rw-r--r-- 2021-01-05 10:19 R E G D
keywords.result 6.63 KB -rw-r--r-- 2021-01-05 10:19 R E G D
kill.result 8.369 KB -rw-r--r-- 2021-01-05 10:19 R E G D
kill_debug.result 1.56 KB -rw-r--r-- 2021-01-05 10:19 R E G D
limit.result 4.118 KB -rw-r--r-- 2021-01-05 10:19 R E G D
loaddata.result 16.914 KB -rw-r--r-- 2021-01-05 10:19 R E G D
loaddata_autocom_innodb.result 0.622 KB -rw-r--r-- 2021-01-05 10:19 R E G D
loadxml.result 2.71 KB -rw-r--r-- 2021-01-05 10:19 R E G D
locale.result 5.588 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lock.result 15.03 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lock_multi.result 11.526 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lock_multi_bug38499.result 0.675 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lock_multi_bug38691.result 0.526 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lock_sync.result 31.173 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lock_tables_lost_commit.result 0.146 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_empty_name.result 0.241 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_errchk.result 0.648 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_state.result 9.656 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_state_bug33693.result 0.108 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_tables-big.result 0.973 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_tables.result 40.972 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_tables_debug.result 0.818 KB -rw-r--r-- 2021-01-05 10:19 R E G D
log_tables_upgrade.result 2.479 KB -rw-r--r-- 2021-01-05 10:19 R E G D
long_tmpdir.result 0.097 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase0.require 0.044 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase1.require 0.044 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase2.require 0.044 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_fs_off.result 2.052 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_fs_on.result 0.073 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_mixed_tmpdir.result 0.172 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_mixed_tmpdir_innodb.result 0.186 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_table.result 2.67 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_table2.result 8.656 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_table4.result 3.676 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_table_grant.result 1.499 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_table_qcache.result 0.634 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_utf8.result 0.169 KB -rw-r--r-- 2021-01-05 10:19 R E G D
lowercase_view.result 10.225 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mdl_sync.result 89.854 KB -rw-r--r-- 2021-01-05 10:19 R E G D
merge-big.result 0.711 KB -rw-r--r-- 2021-01-05 10:19 R E G D
merge.result 97.604 KB -rw-r--r-- 2021-01-05 10:19 R E G D
merge_innodb.result 1.313 KB -rw-r--r-- 2021-01-05 10:19 R E G D
merge_mmap.result 3.333 KB -rw-r--r-- 2021-01-05 10:19 R E G D
metadata.result 13.883 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mix2_myisam.result 57.756 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mix2_myisam_ucs2.result 15.312 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_plugin_load.result 0.339 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_plugin_load_add.result 0.444 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_plugin_load_add2.result 0.444 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_statement.result 0.55 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_update.result 23.214 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_update2.result 0.992 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_update_innodb.result 2.562 KB -rw-r--r-- 2021-01-05 10:19 R E G D
multi_update_tiny_hash.result 1.501 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam-blob.result 1.253 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam-system.result 0.382 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam.result 90.776 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_crash_before_flush_keys.result 1.152 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_debug.result 1.207 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_explain_json_non_select_all.result 217.296 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_explain_json_non_select_none.result 221.321 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_explain_non_select_all.result 116.257 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_explain_non_select_none.result 115.977 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_icp.result 26.567 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_icp_all.result 26.631 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_icp_none.result 26.452 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_mrr.result 19.243 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_mrr_all.result 19.44 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_mrr_cost.result 19.188 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_mrr_cost_all.result 19.386 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_mrr_cost_icp.result 19.329 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_mrr_icp.result 19.384 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_mrr_none.result 19.141 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_recover.result 4.57 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisam_row_rpl.result 2.041 KB -rw-r--r-- 2021-01-05 10:19 R E G D
myisampack.result 7.556 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql-bug41486.result 0.454 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql-bug45236.result 0.321 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql.result 8.67 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_binary_mode.result 1.521 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_client_test.result 8.917 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_client_test_embedded.result 0.108 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_client_test_qcache.result 0.49 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_comments.result 5.019 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_config_editor.result 6.601 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_cp932.result 0.036 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_embedded.result 0.167 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_embedded_client_test.result 0.149 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_locale_posix.result 0.95 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_not_windows.result 0.078 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_plugin.result 3.883 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_protocols.result 0.203 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_upgrade.result 26.823 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysql_upgrade_ssl.result 1.993 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqladmin.result 0.852 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqladmin_shutdown.result 0.153 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlbinlog.result 30.171 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlbinlog_debug.result 0.229 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlbinlog_mixed_or_statment.result 0.835 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlbinlog_raw_mode.result 8.316 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlbinlog_raw_mode_win.result 8.081 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlbinlog_row_big.result 2.422 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlcheck.result 15.196 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqld--defaults-file.result 0.693 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqld--help-notwin.result 53.914 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqld--help-win.result 54.473 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqldump-compat.result 0.108 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqldump-max.result 10.951 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqldump-no-binlog.result 0.049 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqldump.result 280.612 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqldump_restore.result 3.78 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlhotcopy_archive.result 1.801 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlhotcopy_myisam.result 2.275 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlimport.result 0.479 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlshow.result 7.563 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqlslap.result 6.877 KB -rw-r--r-- 2021-01-05 10:19 R E G D
mysqltest.result 31.152 KB -rw-r--r-- 2021-01-05 10:19 R E G D
named_pipe.result 56.246 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ndb_default_cluster.require 0.05 KB -rw-r--r-- 2021-01-05 10:19 R E G D
negation_elimination.result 8.725 KB -rw-r--r-- 2021-01-05 10:19 R E G D
no-threads.result 0.321 KB -rw-r--r-- 2021-01-05 10:19 R E G D
no_binlog.result 0.063 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_embedded.require 0.016 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_embedded_server.result 5.633 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_ndb.require 0.038 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_openssl.require 0.035 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_partition.result 4.138 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_ssl.require 0.031 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_true.require 0.01 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_valgrind.require 0.017 KB -rw-r--r-- 2021-01-05 10:19 R E G D
not_windows.require 0.007 KB -rw-r--r-- 2021-01-05 10:19 R E G D
null.result 14.482 KB -rw-r--r-- 2021-01-05 10:19 R E G D
null_key_all.result 15.598 KB -rw-r--r-- 2021-01-05 10:19 R E G D
null_key_icp.result 15.534 KB -rw-r--r-- 2021-01-05 10:19 R E G D
null_key_none.result 15.474 KB -rw-r--r-- 2021-01-05 10:19 R E G D
odbc.result 0.932 KB -rw-r--r-- 2021-01-05 10:19 R E G D
olap.result 19.126 KB -rw-r--r-- 2021-01-05 10:19 R E G D
one_thread_per_connection.require 0.043 KB -rw-r--r-- 2021-01-05 10:19 R E G D
openssl.require 0.036 KB -rw-r--r-- 2021-01-05 10:19 R E G D
openssl_1.result 8.042 KB -rw-r--r-- 2021-01-05 10:19 R E G D
optimizer_bug12837084.result 13.971 KB -rw-r--r-- 2021-01-05 10:19 R E G D
optimizer_debug_sync.result 1.322 KB -rw-r--r-- 2021-01-05 10:19 R E G D
optimizer_switch.result 19.938 KB -rw-r--r-- 2021-01-05 10:19 R E G D
order_by_all.result 61.425 KB -rw-r--r-- 2021-01-05 10:19 R E G D
order_by_icp_mrr.result 61.368 KB -rw-r--r-- 2021-01-05 10:19 R E G D
order_by_none.result 61.149 KB -rw-r--r-- 2021-01-05 10:19 R E G D
order_by_sortkey.result 2.911 KB -rw-r--r-- 2021-01-05 10:19 R E G D
order_fill_sortbuf.result 0.256 KB -rw-r--r-- 2021-01-05 10:19 R E G D
outfile.result 2.087 KB -rw-r--r-- 2021-01-05 10:19 R E G D
outfile_loaddata.result 10.118 KB -rw-r--r-- 2021-01-05 10:19 R E G D
overflow.result 0.229 KB -rw-r--r-- 2021-01-05 10:19 R E G D
packet.result 4.997 KB -rw-r--r-- 2021-01-05 10:19 R E G D
parser.result 38.22 KB -rw-r--r-- 2021-01-05 10:19 R E G D
parser_bug21114_innodb.result 25.39 KB -rw-r--r-- 2021-01-05 10:19 R E G D
parser_not_embedded.result 4.42 KB -rw-r--r-- 2021-01-05 10:19 R E G D
parser_precedence.result 23.96 KB -rw-r--r-- 2021-01-05 10:19 R E G D
parser_stack.result 9.537 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition.result 76.634 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_archive.result 4.513 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_binlog.result 2.297 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_binlog_stmt.result 0.432 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_blackhole.result 0.17 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_bug18198.result 8.068 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_cache.result 5.162 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_charset.result 0.424 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_column.result 23.065 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_column_prune.result 2.832 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_csv.result 1.831 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_datatype.result 39.34 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_debug_sync.result 3.193 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_disabled.result 4.594 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_error.result 82.17 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_exchange.result 37.599 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_explicit_prune.result 55.627 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_federated.result 0.265 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_grant.result 1.544 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_hash.result 7.118 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_index_innodb.result 4.04 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_index_myisam.result 3.213 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_innodb.result 30.662 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_innodb_plugin.result 5.256 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_innodb_semi_consistent.result 2.92 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_innodb_stmt.result 1.121 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_innodb_tablespace.result 12.756 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_key_cache.result 16.737 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_list.result 12.922 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_locking.result 238.128 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_locking_4.result 1.699 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_mgm.result 4.698 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_mgm_err.result 7.479 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_mgm_err2.result 0.042 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_myisam.result 7.67 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_not_blackhole.result 0.445 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_not_windows.result 3.474 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_open_files_limit.result 1.017 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_order.result 16.287 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_pruning.result 166.975 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_range.result 33.909 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_rename_longfilename.result 2.894 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_symlink.result 4.893 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_sync.result 1.336 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_truncate.result 0.733 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_utf8.result 2.004 KB -rw-r--r-- 2021-01-05 10:19 R E G D
partition_windows.result 1.177 KB -rw-r--r-- 2021-01-05 10:19 R E G D
perror-win.result 0.442 KB -rw-r--r-- 2021-01-05 10:19 R E G D
perror.result 0.46 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin.result 7.728 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth.result 23.392 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_qa.result 20.77 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_qa_1.result 13.739 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_qa_2.result 8.869 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_qa_3.result 1.138 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_sha256.result 3.975 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_sha256_2.result 1.485 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_sha256_server_default.result 2.695 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_sha256_server_default_tls.result 2.831 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_auth_sha256_tls.result 1.817 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_load.result 0.074 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_load_option.result 0.313 KB -rw-r--r-- 2021-01-05 10:19 R E G D
plugin_not_embedded.result 0.463 KB -rw-r--r-- 2021-01-05 10:19 R E G D
preload.result 3.844 KB -rw-r--r-- 2021-01-05 10:19 R E G D
profiling.result 16.135 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps.result 116.728 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_10nestset.result 2.084 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_11bugs.result 5.916 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_1general.result 35.914 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_2myisam.result 103.819 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_3innodb.result 103.361 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_4heap.result 103.276 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_5merge.result 202.341 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_ddl.result 53.68 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_ddl1.result 11.058 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_grant.result 3.714 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ps_not_windows.result 0.504 KB -rw-r--r-- 2021-01-05 10:19 R E G D
python_with_json.require 0.026 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache.result 75.565 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_28249.result 2.294 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_debug.result 8.63 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_disabled.result 0.624 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_merge.result 32.412 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_notembedded.result 6.61 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_ps_no_prot.result 11.096 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_ps_ps_prot.result 11.095 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_size_functionality.result 6.641 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_type_functionality.result 6.795 KB -rw-r--r-- 2021-01-05 10:19 R E G D
query_cache_with_views.result 4.955 KB -rw-r--r-- 2021-01-05 10:19 R E G D
range_all.result 81.481 KB -rw-r--r-- 2021-01-05 10:19 R E G D
range_icp.result 81.075 KB -rw-r--r-- 2021-01-05 10:19 R E G D
range_icp_mrr.result 81.425 KB -rw-r--r-- 2021-01-05 10:19 R E G D
range_mrr.result 80.976 KB -rw-r--r-- 2021-01-05 10:19 R E G D
range_mrr_cost.result 80.673 KB -rw-r--r-- 2021-01-05 10:19 R E G D
range_none.result 80.625 KB -rw-r--r-- 2021-01-05 10:19 R E G D
read_many_rows_innodb.result 2.829 KB -rw-r--r-- 2021-01-05 10:19 R E G D
read_only.result 6.3 KB -rw-r--r-- 2021-01-05 10:19 R E G D
read_only_innodb.result 4.762 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rename.result 1.579 KB -rw-r--r-- 2021-01-05 10:19 R E G D
renamedb.result 0.859 KB -rw-r--r-- 2021-01-05 10:19 R E G D
repair.result 7.022 KB -rw-r--r-- 2021-01-05 10:19 R E G D
replace.result 1.095 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rewrite_general_log.result 8.334 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rewrite_slow_log.result 2.919 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rollback.result 0.568 KB -rw-r--r-- 2021-01-05 10:19 R E G D
round.result 6.736 KB -rw-r--r-- 2021-01-05 10:19 R E G D
row.result 15.908 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rowid_order_innodb.result 3.324 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rpl_colSize.result 4.388 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rpl_extraColmaster_innodb.result 23.846 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rpl_extraColmaster_myisam.result 23.846 KB -rw-r--r-- 2021-01-05 10:19 R E G D
rpl_mysqldump_slave.result 0.847 KB -rw-r--r-- 2021-01-05 10:19 R E G D
schema.result 2.371 KB -rw-r--r-- 2021-01-05 10:19 R E G D
secure_file_priv_win.result 1.434 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_all.result 150.092 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_all_bka.result 150.856 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_all_bka_nixbnl.result 150.114 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_found.result 6.168 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_icp_mrr.result 150.035 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_icp_mrr_bka.result 150.8 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_icp_mrr_bka_nixbnl.result 150.058 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_none.result 149.372 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_none_bka.result 149.465 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_none_bka_nixbnl.result 148.656 KB -rw-r--r-- 2021-01-05 10:19 R E G D
select_safe.result 3.923 KB -rw-r--r-- 2021-01-05 10:19 R E G D
server_id.require 0.031 KB -rw-r--r-- 2021-01-05 10:19 R E G D
server_id1.require 0.033 KB -rw-r--r-- 2021-01-05 10:19 R E G D
server_uuid.result 0.737 KB -rw-r--r-- 2021-01-05 10:19 R E G D
server_uuid_embedded.result 0.317 KB -rw-r--r-- 2021-01-05 10:19 R E G D
shm.result 56.744 KB -rw-r--r-- 2021-01-05 10:19 R E G D
show_check.result 71.325 KB -rw-r--r-- 2021-01-05 10:19 R E G D
show_processlist.result 1.84 KB -rw-r--r-- 2021-01-05 10:19 R E G D
show_processlist_state.result 0.143 KB -rw-r--r-- 2021-01-05 10:19 R E G D
show_profile.result 0.479 KB -rw-r--r-- 2021-01-05 10:19 R E G D
signal.result 63.087 KB -rw-r--r-- 2021-01-05 10:19 R E G D
signal_code.result 0.996 KB -rw-r--r-- 2021-01-05 10:19 R E G D
signal_demo1.result 6.063 KB -rw-r--r-- 2021-01-05 10:19 R E G D
signal_demo2.result 3.855 KB -rw-r--r-- 2021-01-05 10:19 R E G D
signal_demo3.result 3.326 KB -rw-r--r-- 2021-01-05 10:19 R E G D
signal_sqlmode.result 2.506 KB -rw-r--r-- 2021-01-05 10:19 R E G D
single_delete_update.result 24.411 KB -rw-r--r-- 2021-01-05 10:19 R E G D
skip_grants.result 2.473 KB -rw-r--r-- 2021-01-05 10:19 R E G D
skip_log_bin.result 0.163 KB -rw-r--r-- 2021-01-05 10:19 R E G D
skip_name_resolve.result 1.277 KB -rw-r--r-- 2021-01-05 10:19 R E G D
slave-running.result 0.069 KB -rw-r--r-- 2021-01-05 10:19 R E G D
slave-stopped.result 0.07 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sort_buffer_size_functionality.result 6.478 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-big.result 1.468 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-bugs.result 7.661 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-code.result 28.231 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-destruct.result 6.841 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-dynamic.result 9.547 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-error.result 81.432 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-fib.result 0.641 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-lock.result 21.447 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-no-code.result 0.3 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-prelocking.result 7.093 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-security.result 23.506 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-threads.result 2.012 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-ucs2.result 4.778 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp-vars.result 28.089 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp.result 183.743 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_debug.result 0.718 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_gis.result 0.81 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_notembedded.result 10 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_stress_case.result 2.526 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_sync.result 3.167 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_trans.result 14.304 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_trans_log.result 0.87 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sp_validation.result 34.669 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sql_mode.result 17.526 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl-big.result 0.067 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl-crl-revoked-crl.result 0.074 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl-sha512.result 0.367 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl.result 56.893 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_8k_key.result 0.041 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_and_innodb.result 0.179 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_ca.result 0.837 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_cipher.result 0.248 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_compress.result 56.52 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_connect.result 0.01 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_crl.result 1.145 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_crl_clients-valid.result 1.011 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_crl_clients.result 0.417 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_crl_clients_valid.result 0.605 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_crl_crlpath.result 0.711 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_mode.result 1.293 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_mode_no_ssl.result 1.058 KB -rw-r--r-- 2021-01-05 10:19 R E G D
ssl_verify_identity.result 1.003 KB -rw-r--r-- 2021-01-05 10:19 R E G D
status.result 9.825 KB -rw-r--r-- 2021-01-05 10:19 R E G D
status2.result 1.354 KB -rw-r--r-- 2021-01-05 10:19 R E G D
status_bug17954.result 0.568 KB -rw-r--r-- 2021-01-05 10:19 R E G D
status_debug.result 1.063 KB -rw-r--r-- 2021-01-05 10:19 R E G D
strict.result 64.413 KB -rw-r--r-- 2021-01-05 10:19 R E G D
strict_autoinc_1myisam.result 0.639 KB -rw-r--r-- 2021-01-05 10:19 R E G D
strict_autoinc_2innodb.result 0.639 KB -rw-r--r-- 2021-01-05 10:19 R E G D
strict_autoinc_3heap.result 0.639 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_all.result 258.332 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_all_bka.result 258.653 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_all_bka_nixbnl.result 258.416 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_bugs.result 3.048 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_mat.result 94.956 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_mat_all.result 87.691 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_mat_none.result 89.711 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_nomat_nosj.result 258.393 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_nomat_nosj_bka.result 258.636 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_nomat_nosj_bka_nixbnl.result 258.215 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_none.result 258.287 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_none_bka.result 258.38 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_none_bka_nixbnl.result 257.959 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_all.result 368.598 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_all_bka.result 370.215 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_all_bka_nixbnl.result 358.999 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_all_bkaunique.result 370.58 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_dupsweed.result 370.17 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_dupsweed_bka.result 370.416 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_dupsweed_bka_nixbnl.result 352.522 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_dupsweed_bkaunique.result 370.448 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_firstmatch.result 363.229 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_firstmatch_bka.result 363.322 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_firstmatch_bka_nixbnl.result 351.284 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_firstmatch_bkaunique.result 363.354 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_all.result 4.739 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_all_bka.result 4.932 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_all_bka_nixbnl.result 4.953 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_all_bkaunique.result 4.99 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_none.result 4.621 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_none_bka.result 4.714 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_none_bka_nixbnl.result 4.703 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_innodb_none_bkaunique.result 4.746 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_loosescan.result 370.079 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_loosescan_bka.result 370.325 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_loosescan_bka_nixbnl.result 352.497 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_loosescan_bkaunique.result 370.357 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_mat.result 378.771 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_mat_bka.result 378.846 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_mat_bka_nixbnl.result 362.058 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_mat_bkaunique.result 378.878 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_mat_nosj.result 376.229 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_none.result 374.823 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_none_bka.result 374.916 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_none_bka_nixbnl.result 367.909 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subquery_sj_none_bkaunique.result 374.948 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subselect_debug.result 0.399 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subselect_gis.result 0.298 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subselect_innodb.result 28.096 KB -rw-r--r-- 2021-01-05 10:19 R E G D
subselect_notembedded.result 0.734 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sum_distinct-big.result 2.002 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sum_distinct.result 3.141 KB -rw-r--r-- 2021-01-05 10:19 R E G D
symlink.result 7.752 KB -rw-r--r-- 2021-01-05 10:19 R E G D
symlink_windows.result 0.313 KB -rw-r--r-- 2021-01-05 10:19 R E G D
synchronization.result 4.052 KB -rw-r--r-- 2021-01-05 10:19 R E G D
sysdate_is_now.result 0.074 KB -rw-r--r-- 2021-01-05 10:19 R E G D
system_mysql_db.result 13.5 KB -rw-r--r-- 2021-01-05 10:19 R E G D
system_mysql_db_refs.result 2.96 KB -rw-r--r-- 2021-01-05 10:19 R E G D
table_definition_cache_functionality.result 6.896 KB -rw-r--r-- 2021-01-05 10:19 R E G D
table_open_cache_functionality.result 12.784 KB -rw-r--r-- 2021-01-05 10:19 R E G D
tablelock.result 1.501 KB -rw-r--r-- 2021-01-05 10:19 R E G D
tablespace.result 10.131 KB -rw-r--r-- 2021-01-05 10:19 R E G D
temp_pool.result 0.525 KB -rw-r--r-- 2021-01-05 10:19 R E G D
temp_table.result 7.392 KB -rw-r--r-- 2021-01-05 10:19 R E G D
temporal_literal.result 13.164 KB -rw-r--r-- 2021-01-05 10:19 R E G D
testdb_only.require 0.044 KB -rw-r--r-- 2021-01-05 10:19 R E G D
thread_cache_size_functionality.result 5.258 KB -rw-r--r-- 2021-01-05 10:19 R E G D
timezone.result 1.805 KB -rw-r--r-- 2021-01-05 10:19 R E G D
timezone2.result 11.814 KB -rw-r--r-- 2021-01-05 10:19 R E G D
timezone3.result 2.209 KB -rw-r--r-- 2021-01-05 10:19 R E G D
timezone4.result 0.145 KB -rw-r--r-- 2021-01-05 10:19 R E G D
timezone_grant.result 3.759 KB -rw-r--r-- 2021-01-05 10:19 R E G D
trans_read_only.result 1.028 KB -rw-r--r-- 2021-01-05 10:19 R E G D
trigger-compat.result 7.751 KB -rw-r--r-- 2021-01-05 10:19 R E G D
trigger-trans.result 6.464 KB -rw-r--r-- 2021-01-05 10:19 R E G D
trigger.result 68.456 KB -rw-r--r-- 2021-01-05 10:19 R E G D
trigger_notembedded.result 17.026 KB -rw-r--r-- 2021-01-05 10:19 R E G D
true.require 0.007 KB -rw-r--r-- 2021-01-05 10:19 R E G D
truncate.result 3.583 KB -rw-r--r-- 2021-01-05 10:19 R E G D
truncate_coverage.result 2.399 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_binary.result 3.621 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_bit.result 16.916 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_bit_innodb.result 7.314 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_blob.result 28.874 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_date.result 18.463 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_datetime.result 31.236 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_decimal.result 36.102 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_enum.result 101.192 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_float.result 11.969 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_nchar.result 1.437 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_newdecimal-big.result 0.662 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_newdecimal.result 61.458 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_ranges.result 17.381 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_set.result 3.991 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_temporal_fractional.result 635.432 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_temporal_upgrade.result 9.898 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_time.result 109.266 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_timestamp.result 24.694 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_timestamp_explicit.result 27.353 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_uint.result 0.357 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_varchar.result 16.656 KB -rw-r--r-- 2021-01-05 10:19 R E G D
type_year.result 7.775 KB -rw-r--r-- 2021-01-05 10:19 R E G D
udf.result 16.032 KB -rw-r--r-- 2021-01-05 10:19 R E G D
udf_services.result 0.487 KB -rw-r--r-- 2021-01-05 10:19 R E G D
udf_skip_grants.result 0.218 KB -rw-r--r-- 2021-01-05 10:19 R E G D
union.result 52.6 KB -rw-r--r-- 2021-01-05 10:19 R E G D
unsafe_binlog_innodb.result 4.355 KB -rw-r--r-- 2021-01-05 10:19 R E G D
update.result 16.628 KB -rw-r--r-- 2021-01-05 10:19 R E G D
upgrade.result 4.91 KB -rw-r--r-- 2021-01-05 10:19 R E G D
user_limits.result 3.536 KB -rw-r--r-- 2021-01-05 10:19 R E G D
user_var-binlog.result 2.171 KB -rw-r--r-- 2021-01-05 10:19 R E G D
user_var.result 15.345 KB -rw-r--r-- 2021-01-05 10:19 R E G D
validate_password_plugin.result 12.092 KB -rw-r--r-- 2021-01-05 10:19 R E G D
varbinary.result 3.341 KB -rw-r--r-- 2021-01-05 10:19 R E G D
variables-big.result 0.949 KB -rw-r--r-- 2021-01-05 10:19 R E G D
variables-notembedded.result 5.776 KB -rw-r--r-- 2021-01-05 10:19 R E G D
variables-win.result 0.339 KB -rw-r--r-- 2021-01-05 10:19 R E G D
variables.result 61.675 KB -rw-r--r-- 2021-01-05 10:19 R E G D
variables_community.result 0.178 KB -rw-r--r-- 2021-01-05 10:19 R E G D
variables_debug.result 2.134 KB -rw-r--r-- 2021-01-05 10:19 R E G D
view.result 178.725 KB -rw-r--r-- 2021-01-05 10:19 R E G D
view_alias.result 6.192 KB -rw-r--r-- 2021-01-05 10:19 R E G D
view_grant.result 76.689 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wait_timeout.result 1.067 KB -rw-r--r-- 2021-01-05 10:19 R E G D
warnings.result 11.208 KB -rw-r--r-- 2021-01-05 10:19 R E G D
warnings_engine_disabled.result 0.464 KB -rw-r--r-- 2021-01-05 10:19 R E G D
windows.require 0.007 KB -rw-r--r-- 2021-01-05 10:19 R E G D
windows.result 1.86 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6219-csv.result 7.229 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6219-innodb.result 7.268 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6219-memory.result 7.268 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6219-merge.result 5.992 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6219-myisam.result 7.268 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6219-upgrade.result 7.331 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6301_1_not_windows.result 0.043 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6301_2_not_windows.result 0.045 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6301_3.result 0.087 KB -rw-r--r-- 2021-01-05 10:19 R E G D
wl6443_deprecation.result 10.706 KB -rw-r--r-- 2021-01-05 10:19 R E G D
xa.result 7.133 KB -rw-r--r-- 2021-01-05 10:19 R E G D
xml.result 41.778 KB -rw-r--r-- 2021-01-05 10:19 R E G D
REQUEST EXIT
# The results where created without innodb persistent stats. SET @old_innodb_stats_persistent= @@global.innodb_stats_persistent; SET @@global.innodb_stats_persistent= 0; # Original tests for WL#4443 # Must have InnoDB as engine to get the same statistics results. # embedded uses MyISAM as default. CREATE SELECT uses the default engine. SET @old_default_storage_engine = @@default_storage_engine; SET @@default_storage_engine = 'InnoDB'; CREATE TABLE t1 (a int PRIMARY KEY, b varchar(128), KEY (b)) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 13; CREATE TABLE t2 (a int PRIMARY KEY AUTO_INCREMENT, b varchar(128)) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 13; # # # Test how INSERT prune locks # First test, no defaults # FLUSH STATUS; INSERT INTO t1 VALUES (1, 'First row, p1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (table + partition lock/unlock) # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (1, 'First row, duplicate'); ERROR 23000: Duplicate entry '1' for key 'PRIMARY' SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 4 HANDLER_ROLLBACK 1 HANDLER_WRITE 18 # 4 locks (table + partition lock/unlock) # 1 rollback FLUSH STATUS; INSERT INTO t1 VALUES (0, 'First row, p0'), (2, 'First row, p2'), (3, 'First row, p3'), (4, 'First row, p4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 10 HANDLER_WRITE 21 # 10 locks (table + 4 partition * lock/unlock) # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (1 * 13, 'Second row, p0'), (2 * 13, 'Third row, p0'), (3 * 13, 'Fourth row, p0'), (4 * 13, 'Fifth row, p0'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 21 # 4 locks (table + 1 partition lock/unlock) # 1 commit # # INSERT with auto increment, lock pruning # FLUSH STATUS; INSERT INTO t2 VALUES (NULL, 'First auto-inc row'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # Auto increment value is not known until write. # 28 locks (table + 13 partition lock/unlock) # 1 commit FLUSH STATUS; INSERT INTO t2 (b) VALUES ('Second auto-inc row'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # Auto increment value is not known until write. # 28 locks (table + 13 partition lock/unlock) # 1 commit FLUSH STATUS; INSERT INTO t2 VALUES (10, "First row, p10"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # Insert pruning on tables with auto increment is not yet supported # 28 locks (table + 13 partition lock/unlock) # 1 commit # # UPDATE with auto increment, lock pruning # FLUSH STATUS; UPDATE t2 SET b = CONCAT(b, ", UPDATED") WHERE a = 10; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (table + 1 partition lock/unlock) # 1 read_key + 1 update + 1 commit # # Test of pruning with secondary column auto_inc INSERT # CREATE TABLE t3 (a INT, b INT AUTO_INCREMENT, PRIMARY KEY (a, b)) ENGINE = MyISAM PARTITION BY HASH (a) PARTITIONS 5; FLUSH STATUS; INSERT INTO t3 VALUES (1, 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (table + partition lock/unlock) # No commits, since MyISAM! FLUSH STATUS; INSERT INTO t3 VALUES (1, NULL); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (table + partition lock/unlock) SELECT @@sql_mode; @@sql_mode NO_ENGINE_SUBSTITUTION SET @old_sql_mode = @@sql_mode; SET @@sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; SELECT @@sql_mode; @@sql_mode NO_AUTO_VALUE_ON_ZERO FLUSH STATUS; INSERT INTO t3 VALUES (1, 0); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (table + partition lock/unlock) SET @@sql_mode = @old_sql_mode; SELECT @@sql_mode; @@sql_mode NO_ENGINE_SUBSTITUTION FLUSH STATUS; INSERT INTO t3 VALUES (1, 0); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (table + partition lock/unlock) SELECT * FROM t3; a b 1 0 1 1 1 2 1 3 DROP TABLE t3; # # Test handling of INSERT INTO VALUES () # CREATE TABLE t3 (a INT, b CHAR(10)) PARTITION BY HASH (a) PARTITIONS 2; FLUSH STATUS; INSERT INTO t3 VALUES (1, "Test 1"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 VALUES (2, "Test 2"), (3, "Test 3"), (4, "Test 4"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 20 # 6 locks (1 table, 2 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 VALUES (6, "Test 6"), (8, "Test 8"), (10, "Test 10"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 20 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 VALUES (5, "Test 5"), (7, "Test 7"), (9, "Test 9"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 20 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 VALUES (0, "Test 0"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b) VALUES (1, "Test 1"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b) VALUES (2, "Test 2"), (3, "Test 3"), (4, "Test 4"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 20 # 6 locks (1 table, 2 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b) VALUES (6, "Test 6"), (8, "Test 8"), (10, "Test 10"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 20 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b) VALUES (5, "Test 5"), (7, "Test 7"), (9, "Test 9"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 20 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b) VALUES (0, "Test 0"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # # Test handling of # INSERT INTO
VALUES () # FLUSH STATUS; INSERT INTO t3 (a) VALUES (1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES (2), (3), (4); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 20 # 6 locks (1 table, 2 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES (6), (8), (10); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 20 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES (5), (7), (9); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 20 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (b) VALUES ("Only b 1"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (b) VALUES ("Only b 2"), ("Only b 3"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 19 # 4 locks (1 table, 1 partition lock/unlock) SELECT * FROM t3 ORDER BY a, b; a b NULL Only b 1 NULL Only b 2 NULL Only b 3 0 Test 0 0 Test 0 1 NULL 1 Test 1 1 Test 1 2 NULL 2 Test 2 2 Test 2 3 NULL 3 Test 3 3 Test 3 4 NULL 4 Test 4 4 Test 4 5 NULL 5 Test 5 5 Test 5 6 NULL 6 Test 6 6 Test 6 7 NULL 7 Test 7 7 Test 7 8 NULL 8 Test 8 8 Test 8 9 NULL 9 Test 9 9 Test 9 10 NULL 10 Test 10 10 Test 10 DROP TABLE t3; # # Test of insert pruning with subpartitions # # I've placed the varchar column before the int column for better # distribution by LINEAR KEY. CREATE TABLE t3 (a int DEFAULT 10, b varchar(64) DEFAULT "Default", c varchar(64) DEFAULT "Default", d int unsigned DEFAULT 9, e varchar(255) DEFAULT "Default-filler.filler.filler.", PRIMARY KEY (a,b,c,d)) PARTITION BY RANGE COLUMNS (a, b) SUBPARTITION BY LINEAR KEY (d, c) SUBPARTITIONS 4 (PARTITION pNeg VALUES LESS THAN (0, ""), PARTITION `p0-9` VALUES LESS THAN (9, MAXVALUE), PARTITION p10 VALUES LESS THAN (10, MAXVALUE), PARTITION `p11-100` VALUES LESS THAN (99, MAXVALUE)); # # Test INSERT with # empty field specifier list and empty value list # FLUSH STATUS; INSERT INTO t3 () VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) # # Test INSERT with # no field specifier list and full value list, including DEFAULT # specifier # FLUSH STATUS; INSERT INTO t3 VALUES (-1, "ZZZzzzz", "yyyYYY", -1, DEFAULT); Warnings: Warning 1264 Out of range value for column 'd' at row 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) # # Test INSERT with # empty field specifier list and full value list, including NULL # FLUSH STATUS; INSERT INTO t3 () VALUES (0, "", "", 0, NULL); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) # # Test INSERT with field specifier list for only some fields # FLUSH STATUS; INSERT INTO t3 (a) VALUES (1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b) VALUES (1, "Part expr fulfilled"), (10, "Part expr fulfilled"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 subpartition lock/unlock) FLUSH STATUS; INSERT INTO t3 (d) VALUES (1), (2); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 subpartition lock/unlock) FLUSH STATUS; INSERT INTO t3 (c, d) VALUES ("Subpart expr fulfilled", 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b, d) VALUES (10, "Full part, half subpart", 1), (12, "Full part, half subpart", 1), (12, "Full part, half subpart", 2), (12, "Full part, half subpart", 3), (12, "Full part, half subpart", 4), (12, "Full part, half subpart", 0); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_WRITE 23 # d = 0 and d = 4 goes to the same subpart! # 12 locks (1 table, 5 subpartition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a, b, c) VALUES (1, "Full part", "Half subpart"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) # Adding 'Default' as padding to see if LINEAR KEY uses different parts. FLUSH STATUS; INSERT INTO t3 (a, c, d) VALUES (12, "Half part, full subpart", 1), (12, "Half part, full subpartDefault", 1), (12, "Half part, full subpart Default", 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 20 # First and last row goes to the same subpartition. # 6 locks (1 table, 2 subpartition lock/unlock) FLUSH STATUS; INSERT INTO t3 (b, c, d) VALUES ("Half part", "Full subpart", 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) FLUSH STATUS; # # Test INSERT with full field specifier list and full value list # INSERT INTO t3 (a, b, c, d) VALUES (1, "Full part", "Full subpart", 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) # # Test INSERT with no field specifier list and empty value list # (need to delete previous inserted default row first...) # DELETE FROM t3 WHERE a = 10 AND b = 'Default' AND c = 'Default' AND D = 9; FLUSH STATUS; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 subpartition lock/unlock) # # Verifing result # SELECT * FROM t3; a b c d e -1 ZZZzzzz yyyYYY 0 Default-filler.filler.filler. 0 0 NULL 1 Default Default 9 Default-filler.filler.filler. 1 Full part Full subpart 1 Default-filler.filler.filler. 1 Full part Half subpart 9 Default-filler.filler.filler. 1 Part expr fulfilled Default 9 Default-filler.filler.filler. 10 Default Default 1 Default-filler.filler.filler. 10 Default Default 2 Default-filler.filler.filler. 10 Default Default 9 Default-filler.filler.filler. 10 Default Subpart expr fulfilled 1 Default-filler.filler.filler. 10 Full part, half subpart Default 1 Default-filler.filler.filler. 10 Half part Full subpart 1 Default-filler.filler.filler. 10 Part expr fulfilled Default 9 Default-filler.filler.filler. 12 Default Half part, full subpart 1 Default-filler.filler.filler. 12 Default Half part, full subpart Default 1 Default-filler.filler.filler. 12 Default Half part, full subpartDefault 1 Default-filler.filler.filler. 12 Full part, half subpart Default 0 Default-filler.filler.filler. 12 Full part, half subpart Default 1 Default-filler.filler.filler. 12 Full part, half subpart Default 2 Default-filler.filler.filler. 12 Full part, half subpart Default 3 Default-filler.filler.filler. 12 Full part, half subpart Default 4 Default-filler.filler.filler. SELECT d, c FROM t3 PARTITION(`p11-100sp0`); d c 0 Default 4 Default SELECT d, c FROM t3 PARTITION(`p11-100sp1`); d c 1 Default 1 Half part, full subpart 1 Half part, full subpart Default SELECT d, c FROM t3 PARTITION(`p11-100sp2`); d c 1 Half part, full subpartDefault 2 Default SELECT d, c FROM t3 PARTITION(`p11-100sp3`); d c 3 Default # # Test with LOCK TABLES # LOCK TABLES t3 PARTITION (`p11-100sp0`) WRITE; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PARTITION (`p11-100sp0`) WRITE' at line 1 FLUSH STATUS; LOCK TABLES t3 WRITE; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 17 HANDLER_WRITE 17 # 17 locks (1 table, 16 partitions lock) # No further locks/unlocks until UNLOCK TABLES. # # Test INSERT with no field specifier list and empty value list # (need to delete previous inserted default row first...) # DELETE FROM t3 WHERE a = 10 AND b = 'Default' AND c = 'Default' AND D = 9; FLUSH STATUS; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_WRITE 18 FLUSH STATUS; # # Test INSERT with field specifier list for only some fields # (need to delete previous inserted default row first...) # DELETE FROM t3 WHERE a = 10 AND b = "Default" AND c = "Default" AND d = 9; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_READ_KEY 1 HANDLER_WRITE 17 FLUSH STATUS; INSERT INTO t3 (b, d, e) VALUES (DEFAULT, DEFAULT, "All default!"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_WRITE 18 FLUSH STATUS; # # Test UPDATE of non PK field in default row # UPDATE t3 SET e = CONCAT(e, ", updated") WHERE a = 10 AND b = "Default" AND c = "Default" AND d = 9; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 FLUSH STATUS; # # Test UPDATE of PK field + non PK field in default row # UPDATE t3 SET a = DEFAULT, b = "Not DEFAULT!", e = CONCAT(e, ", updated2") WHERE a = 10 AND b = "Default" AND c = "Default" AND d = 9; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 FLUSH STATUS; # # Test REPLACE of default row (INSERT, since not duplicate) # REPLACE INTO t3 (e) VALUES ("New default row"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_WRITE 18 FLUSH STATUS; SELECT * FROM t3 WHERE a = 10 AND b = "Default" AND c = "Default" AND d = 9; a b c d e 10 Default Default 9 New default row SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_READ_KEY 1 HANDLER_WRITE 17 FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t3 WHERE a = 10 AND b = "Default" AND c = "Default" AND d = 9; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t3 p10_p10sp1 const PRIMARY PRIMARY 140 const,const,const,const # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_READ_KEY 1 HANDLER_WRITE 17 FLUSH STATUS; # # Test REPLACE of default row (REPLACE, since duplicate exists) # REPLACE INTO t3 (e) VALUES ("Newest default row"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # # Test SELECT with explicit partition selection # FLUSH STATUS; SELECT * FROM t3 PARTITION (p10); a b c d e 10 Default Default 1 Default-filler.filler.filler. 10 Default Default 2 Default-filler.filler.filler. 10 Default Default 9 Newest default row 10 Default Subpart expr fulfilled 1 Default-filler.filler.filler. 10 Full part, half subpart Default 1 Default-filler.filler.filler. 10 Half part Full subpart 1 Default-filler.filler.filler. 10 Not DEFAULT! Default 9 All default!, updated, updated2 10 Part expr fulfilled Default 9 Default-filler.filler.filler. SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_READ_FIRST 4 HANDLER_READ_KEY 4 HANDLER_READ_RND_NEXT 12 HANDLER_WRITE 17 FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t3 PARTITION (p10); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t3 p10_p10sp0,p10_p10sp1,p10_p10sp2,p10_p10sp3 ALL NULL NULL NULL NULL # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_WRITE 17 FLUSH STATUS; UNLOCK TABLES; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 17 HANDLER_WRITE 17 # 17 locks (1 table, 16 partitions unlock) DROP TABLE t3; # # End of LOCK TABLE test. # # # Test INSERT with timestamp column NO default function # SELECT UNIX_TIMESTAMP('2011-01-01 00:00:00') as time_t, UNIX_TIMESTAMP('2011-01-01 00:00:00') % 3 as part, 1234567890 % 3 as part2; time_t part part2 1293829200 0 0 CREATE TABLE t3 (a timestamp DEFAULT 0, b char(10), PRIMARY KEY (a)) PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567890; INSERT INTO t3 (a) VALUES (NULL); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 0000-00-00 00:00:00 Replace4 2009-02-14 02:31:30 NULL 2011-01-01 00:00:00 DUP_KEY 2011-01-01 00:00:02 Updated 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT with timestamp column DEFAULT INSERT + UPDATE # CREATE TABLE t3 (a timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, b char(10), PRIMARY KEY (a)) PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567890; INSERT INTO t3 (a) VALUES (NULL); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 2 read_key + 1 read_rnd (1 read_key due to index lookup, # 1 read_rnd + 1 read_key due to positioning before update) # 1 delete + 1 write due to moved to different partition # + 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 2009-02-14 02:31:30 NULL 2009-02-14 02:31:31 NULL 2009-02-14 02:31:32 DUP_KEY 2009-02-14 02:31:33 Updated 2009-02-14 02:31:34 Replace4 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT with timestamp column DEFAULT UPDATE # CREATE TABLE t3 (a timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP, b char(10), PRIMARY KEY (a)) PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567890; INSERT INTO t3 (a) VALUES (NULL); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 2 read_key + 1 read_rnd (1 read_key due to index lookup, # 1 read_rnd + 1 read_key due to positioning before update) # 1 delete + 1 write due to moved to different partition # + 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 0000-00-00 00:00:00 Replace4 2009-02-14 02:31:30 NULL 2009-02-14 02:31:32 DUP_KEY 2009-02-14 02:31:33 Updated 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT with timestamp column DEFAULT INSERT # CREATE TABLE t3 (a timestamp DEFAULT CURRENT_TIMESTAMP, b char(10), PRIMARY KEY (a)) PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a)) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567890; INSERT INTO t3 (a) VALUES (NULL); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 2009-02-14 02:31:30 NULL 2009-02-14 02:31:31 NULL 2009-02-14 02:31:34 Replace4 2011-01-01 00:00:00 DUP_KEY 2011-01-01 00:00:02 Updated 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT with DATETIME column NO default function # CREATE TABLE t3 (a DATETIME DEFAULT 0, b char(10), PRIMARY KEY (a)) PARTITION BY KEY (a) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 0000-00-00 00:00:00 Replace4 2011-01-01 00:00:00 DUP_KEY 2011-01-01 00:00:02 Updated 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT with DATETIME column DEFAULT INSERT + UPDATE # CREATE TABLE t3 (a DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, b char(10), PRIMARY KEY (a)) PARTITION BY KEY (a) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 2 read_key + 1 read_rnd (1 read_key due to index lookup, # 1 read_rnd + 1 read_key due to positioning before update) # 1 delete + 1 write due to moved to different partition # + 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 2009-02-14 02:31:31 NULL 2009-02-14 02:31:32 DUP_KEY 2009-02-14 02:31:33 Updated 2009-02-14 02:31:34 Replace4 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT with DATETIME column DEFAULT UPDATE # CREATE TABLE t3 (a DATETIME DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP, b char(10), PRIMARY KEY (a)) PARTITION BY KEY (a) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to DEFAULT function on partitioning column # 2 read_key + 1 read_rnd (1 read_key due to index lookup, # 1 read_rnd + 1 read_key due to positioning before update) # 1 delete + 1 write due to moved to different partition # + 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 0000-00-00 00:00:00 Replace4 2009-02-14 02:31:32 DUP_KEY 2009-02-14 02:31:33 Updated 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT with DATETIME column DEFAULT INSERT # CREATE TABLE t3 (a DATETIME DEFAULT CURRENT_TIMESTAMP, b char(10), PRIMARY KEY (a)) PARTITION BY KEY (a) PARTITIONS 3; SHOW CREATE TABLE t3; Table Create Table t3 CREATE TABLE `t3` ( `a` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `b` char(10) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) PARTITIONS 3 */ FLUSH STATUS; SET TIMESTAMP = 1234567891; INSERT INTO t3 VALUES (); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:02'), ('2011-01-01 00:00:03'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_WRITE 19 # 6 locks (1 table, 2 partition lock/unlock) # 2 writes FLUSH STATUS; SET TIMESTAMP = 1234567892; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:00') ON DUPLICATE KEY UPDATE b = "DUP_KEY"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; INSERT INTO t3 (a) VALUES ('2011-01-01 00:00:01') ON DUPLICATE KEY UPDATE a = '2011-01-01 00:00:05', b = "DUP_KEY2"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 8 locks (1 table, 3 partition lock/unlock) # No pruning due to updating partitioning field. # 1 read_key + 1 delete + 2 write (1 failed + 1 ok) # 1 delete + 1 write due to moved to different partition FLUSH STATUS; SET TIMESTAMP = 1234567893; UPDATE t3 SET b = 'Updated' WHERE a = '2011-01-01 00:00:02'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update (same partition) # 1 (failed) write FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; REPLACE INTO t3 VALUES ('2011-01-01 00:00:04', 'Replace2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write # # Test of replace of default PK (delete might be needed first) # DELETE FROM t3 WHERE a = 0; FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace3'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SET TIMESTAMP = 1234567894; REPLACE INTO t3 (b) VALUES ('Replace4'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) # 1 read_key + 1 update + 1 failed write SELECT * FROM t3; a b 2009-02-14 02:31:31 NULL 2009-02-14 02:31:34 Replace4 2011-01-01 00:00:00 DUP_KEY 2011-01-01 00:00:02 Updated 2011-01-01 00:00:03 NULL 2011-01-01 00:00:04 Replace2 2011-01-01 00:00:05 DUP_KEY2 DROP TABLE t3; # # Test INSERT SELECT # FLUSH STATUS; TRUNCATE TABLE t2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 17 # All partitions needs to be locked # 28 locks (table + 13 partition lock/unlock) # 1 commit FLUSH STATUS; INSERT INTO t2 SELECT a, b FROM t1 WHERE a IN (1,4); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 34 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_NEXT 2 HANDLER_WRITE 19 # All partitions in t2 needs to be locked (no propagation from t1 yet). # 2 partitions in t1 needs to be locked (for 1 and 4) # 34 locks (2 table + 15 partition lock/unlock) # 2 read_first, read_key and read_next. # 1 commit # # Test TRUNCATE PARTITION # FLUSH STATUS; ALTER TABLE t2 TRUNCATE PARTITION p1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO t2 SELECT a, b FROM t1 WHERE a = 1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 1 HANDLER_WRITE 18 # 32 locks (2 table + 13 + 1 partitions) # # Test insert on duplicated key update # FLUSH STATUS; INSERT INTO t1 VALUES (65, "No duplicate") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", INSERT_DUP_KEY_UPDATE"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 lock (1 table + 1 partition lock/unlock) # 1 write (insert) # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (65, "No duplicate") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", INSERT_DUP_KEY_UPDATE"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 lock (1 table + 1 partition lock/unlock) # 1 read_key # 1 update # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (78, "No duplicate") ON DUPLICATE KEY UPDATE a = a + 13, b = CONCAT(b, ", INSERT_DUP_KEY_UPDATE"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # If a partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 write (insert) # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (78, "No duplicate") ON DUPLICATE KEY UPDATE a = a + 13, b = CONCAT(b, ", INSERT_DUP_KEY_UPDATE"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # If partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 read_key # 1 update # 1 commit # # Test of insert on duplicate key with failed update # FLUSH STATUS; INSERT INTO t1 VALUES (78, "No duplicate") ON DUPLICATE KEY UPDATE a = a + 13, b = CONCAT(b, ", INSERT_DUP_KEY_UPDATE third"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # If partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (78, "No duplicate") ON DUPLICATE KEY UPDATE a = a + 13, b = CONCAT(b, ", INSERT_DUP_KEY_UPDATE fail?"); ERROR 23000: Duplicate entry '91' for key 'PRIMARY' SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_ROLLBACK 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # If partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 read_key # 1 update # 1 rollback # # Test of insert on duplicate key with update to different partition # FLUSH STATUS; INSERT INTO t1 VALUES (104, "No duplicate") ON DUPLICATE KEY UPDATE a = a + 1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # If partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 write # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (104, "No duplicate") ON DUPLICATE KEY UPDATE a = a + 1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # If partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 delete # 1 write # 1 read_key # 1 commit FLUSH STATUS; INSERT INTO t1 VALUES (104, "No duplicate 104") ON DUPLICATE KEY UPDATE a = a + 1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # If partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 write # 1 commit # # Test of insert on duplicate key with failed update to different # partition # FLUSH STATUS; INSERT INTO t1 VALUES (104, "No duplicate 104 + 1") ON DUPLICATE KEY UPDATE a = a + 1; ERROR 23000: Duplicate entry '105' for key 'PRIMARY' SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_ROLLBACK 1 HANDLER_WRITE 19 # If partitioning column is updated, no pruning # 28 lock (1 table + 13 partition lock/unlock) # 1 write # 1 read_key # 1 rollback # # Test replace # FLUSH STATUS; REPLACE INTO t1 VALUES (5, "REPLACE first"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 lock (1 table + 1 partition lock/unlock) # 1 write # 1 commit FLUSH STATUS; REPLACE INTO t1 VALUES (5, "REPLACE second"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 lock (1 table + 1 partition lock/unlock) # 1 write # 1 read_key # 1 update (NOTE: write_record() may cheat instead of delete/insert!) # 1 rollback # # Test SELECT # FLUSH STATUS; SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 1 First row, p1 2 First row, p2 3 First row, p3 4 First row, p4 5 REPLACE second 13 Second row, p0 26 Third row, p0 39 Fourth row, p0 52 Fifth row, p0 65 No duplicate, INSERT_DUP_KEY_UPDATE 78 No duplicate 91 No duplicate, INSERT_DUP_KEY_UPDATE 104 No duplicate 104 105 No duplicate SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_FIRST 13 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 15 HANDLER_WRITE 17 # 28 locks # 13 read_first # 13 read_key # 15 read_next FLUSH STATUS; SELECT * FROM t1 WHERE a IN (0, 1, 4) ORDER BY a; a b 0 First row, p0 1 First row, p1 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 12 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) # 3 read_first, read_key # 12 read_next FLUSH STATUS; SELECT * FROM t1 WHERE a IN (13, 26, 39, 52); a b 13 Second row, p0 26 Third row, p0 39 Fourth row, p0 52 Fifth row, p0 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_NEXT 9 HANDLER_WRITE 17 # 4 locks (1 table + 1 partitions lock/unlock) # 1 read_first, read_key # 9 read_next FLUSH STATUS; SELECT * FROM t1 WHERE a = 3; a b 3 First row, p3 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 4 locks # 1 read_key FLUSH STATUS; SELECT * FROM t1 WHERE b LIKE 'First%' ORDER BY a; a b 0 First row, p0 1 First row, p1 2 First row, p2 3 First row, p3 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 5 HANDLER_WRITE 17 # 28 locks # 13 read_key # 5 read_next # # Test EXPLAIN SELECT # FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 index NULL b 131 NULL # Using index SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 17 # 28 locks (1 table + 13 partition lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a IN (0, 1, 4) ORDER BY a; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0,p1,p4 index PRIMARY PRIMARY 4 NULL # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_WRITE 17 # 8 locks (1 table + 3 partition lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a IN (13, 26, 39, 52); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0 index PRIMARY b 131 NULL # Using where; Using index SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 17 # 4 locks (1 table + 1 partition lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 3; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p3 const PRIMARY PRIMARY 4 const # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 4 locks (1 table + 1 partition lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b LIKE 'First%' ORDER BY a; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 range b b 131 NULL # Using where; Using index; Using filesort SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 17 # 28 locks (1 table + 13 partition lock/unlock) # # Test pruning of non static values # They will need to lock all partitions, but will allow scan pruning # due to a second pruning call in optimize. # CREATE TABLE t3 (a INT); INSERT INTO t3 VALUES (1); FLUSH STATUS; SELECT * FROM t1 WHERE a = (SELECT a FROM t3); a b 1 First row, p1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 30 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 30 locks (2 table + 13 partitions lock/unlock) # 1 read_first (NOTE only reads from one partition!) # 2 read_key # 2 read_rnd_next FLUSH STATUS; SELECT t1.a FROM t1 INNER JOIN t3 ON t1.a = t3.a; a 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 30 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 30 locks (2 table + 13 partitions lock/unlock) # 1 read_first (NOTE only reads from one partition!) # 2 read_key FLUSH STATUS; EXPLAIN PARTITIONS SELECT t1.a, t1.b FROM t1 INNER JOIN t3 ON t1.a = t3.a; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t3 NULL ALL NULL NULL NULL NULL # Using where 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 eq_ref PRIMARY PRIMARY 4 test.t3.a # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 30 HANDLER_WRITE 17 # 30 locks (2 table + 13 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = (SELECT a FROM t3); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t1 p1 const PRIMARY PRIMARY 4 const # NULL 2 SUBQUERY t3 NULL ALL NULL NULL NULL NULL # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 30 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 30 locks (2 table + 13 partitions lock/unlock) FLUSH STATUS; SELECT * FROM t1 WHERE a = 1; a b 1 First row, p1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 4 locks # 1 read_key FLUSH STATUS; SELECT * FROM t1 WHERE a = (SELECT COUNT(*) FROM t3); a b 1 First row, p1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 30 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 30 locks (2 table + 13 partitions lock/unlock) # 1 read_first # 2 read_key, read_rnd_next # # Test of non indexed partition column # CREATE TABLE t4 SELECT a, b FROM t1; ALTER TABLE t4 PARTITION BY HASH (a) PARTITIONS 5; FLUSH STATUS; SELECT * FROM t4 WHERE a = (SELECT a FROM t3); a b 1 First row, p1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 14 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 # 14 locks (2 tables + 5 partitions lock/unlock) # 2 read_first, read_key # 6 read_rnd_next FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t4 WHERE a = (SELECT a FROM t3); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t4 p1 ALL NULL NULL NULL NULL # Using where 2 SUBQUERY t3 NULL ALL NULL NULL NULL NULL # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 14 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 14 locks (2 tables + 5 partitions lock/unlock) INSERT INTO t3 VALUES (3); SELECT * FROM t4 WHERE a = (SELECT a FROM t3); ERROR 21000: Subquery returns more than 1 row EXPLAIN PARTITIONS SELECT * FROM t4 WHERE a = (SELECT a FROM t3); ERROR 21000: Subquery returns more than 1 row EXPLAIN PARTITIONS SELECT * FROM t4 WHERE a = (SELECT a FROM t3 LIMIT 1); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t4 p1 ALL NULL NULL NULL NULL # Using where 2 SUBQUERY t3 NULL ALL NULL NULL NULL NULL # NULL EXPLAIN PARTITIONS SELECT * FROM t4 WHERE a = (SELECT MAX(a) FROM t3); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t4 p3 ALL NULL NULL NULL NULL # Using where 2 SUBQUERY t3 NULL ALL NULL NULL NULL NULL # NULL DROP TABLE t3; DROP TABLE t4; # # Test derived tables like SELECT * FROM (SELECT * FROM ...) # FLUSH STATUS; SELECT * FROM (SELECT * FROM t1 WHERE a IN (0,2,3,13,26)) t3; a b 0 First row, p0 13 Second row, p0 26 Third row, p0 2 First row, p2 3 First row, p3 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 11 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 22 # 8 locks (1 table + 3 partitions lock/unlock) # 3 read_first, read_key # 11 read_next # 6 read_rnd_next (tmp table) FLUSH STATUS; SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0,2,3,13,26)) t3) t4; a b 0 First row, p0 13 Second row, p0 26 Third row, p0 2 First row, p2 3 First row, p3 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 11 HANDLER_READ_RND_NEXT 12 HANDLER_WRITE 27 # 8 locks (1 table + 3 partitions lock/unlock) # 3 read_first, read_key # 11 read_next # 12 read_rnd_next (tmp table) # # Test EXPLAIN SELECT * FROM (SELECT * FROM ...) # FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM (SELECT * FROM t1 WHERE a IN (0,2,3,13,26)) t3; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL ALL NULL NULL NULL NULL # NULL 2 DERIVED t1 p0,p2,p3 index PRIMARY b 131 NULL # Using where; Using index SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0,2,3,13,26)) t3) t4; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL ALL NULL NULL NULL NULL # NULL 2 DERIVED NULL ALL NULL NULL NULL NULL # NULL 3 DERIVED t1 p0,p2,p3 index PRIMARY b 131 NULL # Using where; Using index SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) # # Test SELECT ... UNION SELECT ... # FLUSH STATUS; SELECT * FROM t1 UNION SELECT * FROM t2; a b 0 First row, p0 1 First row, p1 104 No duplicate 104 105 No duplicate 13 Second row, p0 2 First row, p2 26 Third row, p0 3 First row, p3 39 Fourth row, p0 4 First row, p4 5 REPLACE second 52 Fifth row, p0 65 No duplicate, INSERT_DUP_KEY_UPDATE 78 No duplicate 91 No duplicate, INSERT_DUP_KEY_UPDATE SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 56 HANDLER_READ_FIRST 26 HANDLER_READ_KEY 26 HANDLER_READ_NEXT 15 HANDLER_READ_RND_NEXT 32 HANDLER_WRITE 34 # 56 locks (2 tables + 26 partitions lock/unlock) FLUSH STATUS; SELECT * FROM t1 WHERE a IN (0, 1, 13, 4) UNION SELECT * FROM t2; a b 0 First row, p0 13 Second row, p0 1 First row, p1 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_READ_FIRST 16 HANDLER_READ_KEY 16 HANDLER_READ_NEXT 12 HANDLER_READ_RND_NEXT 21 HANDLER_WRITE 23 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3 UNION SELECT * FROM t2; a b 0 First row, p0 13 Second row, p0 1 First row, p1 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_READ_FIRST 16 HANDLER_READ_KEY 16 HANDLER_READ_NEXT 12 HANDLER_READ_RND_NEXT 26 HANDLER_WRITE 27 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4) UNION SELECT * FROM t2) t3) t4; a b 0 First row, p0 13 Second row, p0 1 First row, p1 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_READ_FIRST 16 HANDLER_READ_KEY 16 HANDLER_READ_NEXT 12 HANDLER_READ_RND_NEXT 31 HANDLER_WRITE 31 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3 UNION SELECT * FROM t2) t4; a b 0 First row, p0 13 Second row, p0 1 First row, p1 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_READ_FIRST 16 HANDLER_READ_KEY 16 HANDLER_READ_NEXT 12 HANDLER_READ_RND_NEXT 31 HANDLER_WRITE 31 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3) t4 UNION SELECT * FROM t2; a b 0 First row, p0 13 Second row, p0 1 First row, p1 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_READ_FIRST 16 HANDLER_READ_KEY 16 HANDLER_READ_NEXT 12 HANDLER_READ_RND_NEXT 31 HANDLER_WRITE 31 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3 UNION SELECT * FROM t2 WHERE a = 1) t4; a b 0 First row, p0 13 Second row, p0 1 First row, p1 4 First row, p4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 12 HANDLER_READ_RND_NEXT 16 HANDLER_WRITE 30 # 12 locks (2 tables, 3 + 1 partitions lock/unlock) # # Test EXPLAIN SELECT ... UNION SELECT ... # FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 UNION SELECT * FROM t2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 index NULL b 131 NULL # Using index 2 UNION t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ALL NULL NULL NULL NULL # NULL NULL UNION RESULT NULL ALL NULL NULL NULL NULL # Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 56 HANDLER_WRITE 17 # 56 locks FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a IN (0, 1, 13, 4) UNION SELECT * FROM t2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t1 p0,p1,p4 index PRIMARY b 131 NULL # Using where; Using index 2 UNION t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ALL NULL NULL NULL NULL # NULL NULL UNION RESULT NULL ALL NULL NULL NULL NULL # Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_WRITE 17 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3 UNION SELECT * FROM t2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL ALL NULL NULL NULL NULL # NULL 2 DERIVED t1 p0,p1,p4 index PRIMARY b 131 NULL # Using where; Using index 3 UNION t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ALL NULL NULL NULL NULL # NULL NULL UNION RESULT NULL ALL NULL NULL NULL NULL # Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_WRITE 17 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4) UNION SELECT * FROM t2) t3) t4; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL ALL NULL NULL NULL NULL # NULL 2 DERIVED NULL ALL NULL NULL NULL NULL # NULL 3 DERIVED t1 p0,p1,p4 index PRIMARY b 131 NULL # Using where; Using index 4 UNION t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ALL NULL NULL NULL NULL # NULL NULL UNION RESULT NULL ALL NULL NULL NULL NULL # Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_WRITE 17 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3 UNION SELECT * FROM t2) t4; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL ALL NULL NULL NULL NULL # NULL 2 DERIVED NULL ALL NULL NULL NULL NULL # NULL 3 DERIVED t1 p0,p1,p4 index PRIMARY b 131 NULL # Using where; Using index 4 UNION t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ALL NULL NULL NULL NULL # NULL NULL UNION RESULT NULL ALL NULL NULL NULL NULL # Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_WRITE 17 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3) t4 UNION SELECT * FROM t2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL ALL NULL NULL NULL NULL # NULL 2 DERIVED NULL ALL NULL NULL NULL NULL # NULL 3 DERIVED t1 p0,p1,p4 index PRIMARY b 131 NULL # Using where; Using index 4 UNION t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ALL NULL NULL NULL NULL # NULL NULL UNION RESULT NULL ALL NULL NULL NULL NULL # Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 36 HANDLER_WRITE 17 # 36 locks (2 tables, 13 + 3 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM (SELECT * FROM (SELECT * FROM t1 WHERE a IN (0, 1, 13, 4)) t3 UNION SELECT * FROM t2 WHERE a = 1) t4; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL ALL NULL NULL NULL NULL # NULL 2 DERIVED NULL ALL NULL NULL NULL NULL # NULL 3 DERIVED t1 p0,p1,p4 index PRIMARY b 131 NULL # Using where; Using index 4 UNION t2 p1 const PRIMARY PRIMARY 4 const # NULL NULL UNION RESULT NULL ALL NULL NULL NULL NULL # Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 12 locks (2 tables, 3 + 1 partitions lock/unlock) # # Test UPDATE # SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 1 First row, p1 2 First row, p2 3 First row, p3 4 First row, p4 5 REPLACE second 13 Second row, p0 26 Third row, p0 39 Fourth row, p0 52 Fifth row, p0 65 No duplicate, INSERT_DUP_KEY_UPDATE 78 No duplicate 91 No duplicate, INSERT_DUP_KEY_UPDATE 104 No duplicate 104 105 No duplicate # This should be prunable (does not change the partitioning key) FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", updated 1") WHERE a IN (13, 26, 39, 52); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 4 HANDLER_UPDATE 4 HANDLER_WRITE 17 # 4 locks (1 table + 1 partition lock/unlock) # 4 read_key # 4 update # # This should not be prunable (only after implementing 'update pruning') # i.e if all changed partitioning field is set to constant values, # set lock_partitions to be a union of read_partition and the matching # partition for the constants. Easy if all partitioning fields are set, # probably needs a second round of prune_partitions() with these fields # set to see if possible to prune locks. FLUSH STATUS; UPDATE t1 SET a = 99, b = CONCAT(b, ", updated 2 -> p8") WHERE a = 13; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # 28 locks (1 table + 13 partition lock/unlock) # 2 read_key # 1 read_rnd # 1 delete (due to moved to another partition) # 1 write # # This should use ha_update_row instead of ha_write_row + ha_delete_row FLUSH STATUS; UPDATE t1 SET a = 13 + 99, b = CONCAT(b, ", updated 3") WHERE a = 99; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 28 locks (1 table + 13 partition lock/unlock) # 2 read_key # 1 read_rnd # 1 update # # This should not be prunable (only after implementing # 'optimized update pruning', which will probably never happen, since # it depends on which partitioning type is used (for this only hash is # simple, but range and list is possible, key is very hard) FLUSH STATUS; UPDATE t1 SET a = a + 1, b = CONCAT(b, ", updated 4 -> p9") WHERE a = 112; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # 28 locks (1 table + 13 partition lock/unlock) # 2 read_key # 1 read_rnd # 1 delete (due to moved to another partition) # 1 write FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", same as min(a) + 2 in t2") WHERE a = (SELECT MIN(a) + 2 FROM t2); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 56 HANDLER_READ_FIRST 13 HANDLER_READ_KEY 14 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 56 locks (2 tables, 13 + 13 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", max(a) in t2: ", (SELECT MAX(a) FROM t2)) WHERE a = 5; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 14 HANDLER_READ_LAST 13 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 32 locks (2 tables, 1 + 13 partitions lock/unlock) # # Test multi table UPDATE # SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 1 First row, p1 2 First row, p2 3 First row, p3, same as min(a) + 2 in t2 4 First row, p4 5 REPLACE second, max(a) in t2: 4 26 Third row, p0, updated 1 39 Fourth row, p0, updated 1 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 78 No duplicate 91 No duplicate, INSERT_DUP_KEY_UPDATE 104 No duplicate 104 105 No duplicate 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 SELECT * FROM t2 ORDER BY a; a b 1 First row, p1 4 First row, p4 FLUSH STATUS; EXPLAIN PARTITIONS UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ", t2.b:", t2.b), t2.b = CONCAT(t2.b, ", t1.b:", t1.b) WHERE t2.b = t1.b and t2.a = 4; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p4 const PRIMARY PRIMARY 4 const # NULL 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ref b b 131 const # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 32 locks (2 table, 13 + 1 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ", t2.b:", t2.b), t2.b = CONCAT(t2.b, ", t1.b:", t1.b) WHERE t2.b = t1.b and t2.a = 4; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p4 const PRIMARY PRIMARY 4 const # NULL 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ref b b 131 const # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 32 locks (2 table, 13 + 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ", t2.b:", t2.b), t2.b = CONCAT(t2.b, ", t1.b:", t1.b) WHERE t2.b = t1.b and t2.a = 4; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 15 HANDLER_READ_NEXT 1 HANDLER_READ_RND 1 HANDLER_READ_RND_NEXT 2 HANDLER_UPDATE 2 HANDLER_WRITE 18 # 32 locks (2 table, 13 + 1 partitions lock/unlock) # 15 read_key # 1 read_next, read_rnd # 2 rean_rnd_next # 2 update # # Test of views # FLUSH STATUS; CREATE VIEW v1_25 AS SELECT a, b FROM t1 PARTITION (p2, p5); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_WRITE 17 # No locks! FLUSH STATUS; CREATE VIEW v1_25_check AS SELECT a, b FROM t1 PARTITION (p2, p5) t1_alias WITH CHECK OPTION; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_WRITE 17 # No locks! FLUSH STATUS; CREATE VIEW v1_9 AS SELECT a, b FROM t1 WHERE a = 9; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_WRITE 17 # No locks! FLUSH STATUS; CREATE VIEW v1_9_check AS SELECT a, b FROM t1 WHERE a = 9 WITH CHECK OPTION; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_WRITE 17 # No locks! FLUSH STATUS; CREATE VIEW v1_all AS SELECT a, b FROM t1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_WRITE 17 # No locks! SELECT TABLE_NAME, CHECK_OPTION, IS_UPDATABLE, VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME LIKE 'v1_%'; TABLE_NAME CHECK_OPTION IS_UPDATABLE VIEW_DEFINITION v1_25 NONE YES select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` PARTITION (`p2`,`p5`) v1_25_check CASCADED YES select `t1_alias`.`a` AS `a`,`t1_alias`.`b` AS `b` from `test`.`t1` PARTITION (`p2`,`p5`) `t1_alias` v1_9 NONE YES select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (`test`.`t1`.`a` = 9) v1_9_check CASCADED YES select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (`test`.`t1`.`a` = 9) v1_all NONE YES select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` FLUSH STATUS; INSERT INTO v1_all VALUES (23, "Insert in v1_all"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO v1_25 VALUES (18, "Insert in v1_25"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO v1_25 VALUES (17, "Insert in v1_25 fail"); ERROR HY000: Found a row not matching the given partition set SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 2 HANDLER_WRITE 17 # 2 locks (1 table, 0 partition lock/unlock) FLUSH STATUS; INSERT IGNORE INTO v1_25 VALUES (17, "Insert ignore in v1_25"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 2 HANDLER_WRITE 17 # 2 locks (1 table, 0 partition lock/unlock) FLUSH STATUS; INSERT INTO v1_25_check VALUES (31, "Insert in v1_25_check"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO v1_25_check VALUES (30, "Insert in v1_25_check fail"); ERROR HY000: Found a row not matching the given partition set SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 2 HANDLER_WRITE 17 # 2 locks (1 table, 0 partition lock/unlock) FLUSH STATUS; INSERT IGNORE INTO v1_25_check VALUES (30, "Insert ignore in v1_25_check"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 2 HANDLER_WRITE 17 # 2 locks (1 table, 0 partition lock/unlock) FLUSH STATUS; INSERT INTO v1_9 VALUES (9, "Insert in v1_9"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO v1_9 VALUES (8, "Insert in v1_9 NO CHECK!"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) SELECT * FROM t1 WHERE a = 8; a b 8 Insert in v1_9 NO CHECK! # DELETE will not find row not in view FLUSH STATUS; DELETE FROM v1_9_check WHERE a = 8; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_WRITE 17 # 0 locks, impossible where! EXPLAIN PARTITIONS DELETE FROM v1_9_check WHERE a = 8; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # No matching rows after partition pruning EXPLAIN PARTITIONS SELECT * FROM v1_9_check WHERE a = 8; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE SELECT * FROM t1 WHERE a = 8; a b 8 Insert in v1_9 NO CHECK! FLUSH STATUS; INSERT INTO v1_9_check VALUES (10, "Insert in v1_9_check fail"); ERROR HY000: CHECK OPTION failed 'test.v1_9_check' SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 4 HANDLER_ROLLBACK 1 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) SELECT * FROM t1 WHERE a = 9; a b 9 Insert in v1_9 FLUSH STATUS; DELETE FROM v1_9_check WHERE a = 9; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; INSERT INTO v1_9_check VALUES (9, "Insert in v1_9_check"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 FLUSH STATUS; SELECT * FROM v1_9; a b 9 Insert in v1_9_check SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; SELECT * FROM v1_25; a b 18 Insert in v1_25 2 First row, p2 31 Insert in v1_25_check 5 REPLACE second, max(a) in t2: 4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_NEXT 4 HANDLER_WRITE 17 # 6 locks (1 table, 2 partition lock/unlock) FLUSH STATUS; SELECT * FROM v1_all; a b 0 First row, p0 1 First row, p1 104 No duplicate 104 105 No duplicate 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 18 Insert in v1_25 2 First row, p2 23 Insert in v1_all 26 Third row, p0, updated 1 3 First row, p3, same as min(a) + 2 in t2 31 Insert in v1_25_check 39 Fourth row, p0, updated 1 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 78 No duplicate 8 Insert in v1_9 NO CHECK! 9 Insert in v1_9_check 91 No duplicate, INSERT_DUP_KEY_UPDATE SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_FIRST 13 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 20 HANDLER_WRITE 17 # 28 locks (1 table, 13 partition lock/unlock) DROP VIEW v1_all; DROP VIEW v1_9, v1_9_check; DROP VIEW v1_25, v1_25_check; # # Test CREATE SELECT # FLUSH STATUS; CREATE TABLE t3 SELECT a, b FROM t1 WHERE a IN (0, 1, 13, 113); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 10 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 12 HANDLER_WRITE 20 # 10 locks (2 tables, 3 partitions lock/unlock) SELECT * FROM t3 ORDER BY a; a b 0 First row, p0 1 First row, p1 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 DROP TABLE t3; FLUSH STATUS; CREATE TABLE t3 SELECT a, b FROM t1 WHERE b LIKE 'First%'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 30 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 5 HANDLER_WRITE 22 # 30 locks (2 tables, 13 partitions lock/unlock) SELECT * FROM t3 ORDER BY a; a b 0 First row, p0 1 First row, p1 2 First row, p2 3 First row, p3, same as min(a) + 2 in t2 4 First row, p4, t2.b:First row, p4 DROP TABLE t3; # # Test Stored procedures # CREATE PROCEDURE sp_insert(a INT, b CHAR(16)) INSERT INTO test.t1 VALUES (a, b); CREATE PROCEDURE sp_insert_partition(p CHAR(16), a INT, b CHAR(16)) BEGIN SET @str = CONCAT("INSERT INTO test.t1 PARTITION(", p, ") VALUES (?, ?)"); SET @x = a, @y = b; PREPARE stmt FROM @str; EXECUTE stmt USING @x, @y; DEALLOCATE PREPARE stmt; END| CREATE PROCEDURE sp_select_all() SELECT * FROM test.t1; CREATE PROCEDURE sp_select_exact(x INT) SELECT * FROM test.t1 WHERE a = x; CREATE PROCEDURE sp_select_partition(p CHAR(16)) BEGIN SET @str = CONCAT("SELECT * FROM test.t1 PARTITION(", p, ")"); PREPARE stmt FROM @str; EXECUTE stmt; DEALLOCATE PREPARE stmt; END| CREATE PROCEDURE sp_select_range(x INT, y INT) SELECT * FROM test.t1 WHERE a between x and y; FLUSH STATUS; CALL sp_insert(313,"Test313"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_READ_KEY 1 HANDLER_WRITE 18 # 6 locks (proc table, t1 + 1 partition lock/unlock) FLUSH STATUS; CALL sp_insert_partition("p7", 98, "Test98"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_READ_KEY 1 HANDLER_WRITE 18 # 6 locks (proc table, t1 + 1 partition lock/unlock) FLUSH STATUS; CALL sp_insert_partition("p8", 111, "Test111"); ERROR HY000: Found a row not matching the given partition set SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 2 HANDLER_WRITE 17 # no proc locking since already in proc cache. # 2 locks (1 table, no partitions lock/unlock) FLUSH STATUS; CALL sp_insert_partition("p7,p8", 111, "Test111"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 table, 1 partition lock/unlock) FLUSH STATUS; CALL sp_select_all(); a b 0 First row, p0 1 First row, p1 104 No duplicate 104 105 No duplicate 111 Test111 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 18 Insert in v1_25 2 First row, p2 23 Insert in v1_all 26 Third row, p0, updated 1 3 First row, p3, same as min(a) + 2 in t2 31 Insert in v1_25_check 313 Test313 39 Fourth row, p0, updated 1 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 78 No duplicate 8 Insert in v1_9 NO CHECK! 9 Insert in v1_9_check 91 No duplicate, INSERT_DUP_KEY_UPDATE 98 Test98 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 30 HANDLER_READ_FIRST 13 HANDLER_READ_KEY 14 HANDLER_READ_NEXT 23 HANDLER_WRITE 17 # 30 locks (procs table, t1 + 13 partitions lock/unlock) FLUSH STATUS; CALL sp_select_exact(98); a b 98 Test98 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_READ_KEY 2 HANDLER_WRITE 17 # 6 locks (proc table, t1 + 1 partition lock/unlock) FLUSH STATUS; CALL sp_select_partition("p7"); a b 111 Test111 98 Test98 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_NEXT 2 HANDLER_WRITE 17 # 6 locks (proc table, t1 + 1 partition lock/unlock) FLUSH STATUS; CALL sp_select_partition("p8"); a b 8 Insert in v1_9 NO CHECK! SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 # no proc locking since already in proc cache. # 4 locks (t1 + 1 partition lock/unlock) FLUSH STATUS; CALL sp_select_partition("p7,p8"); a b 111 Test111 8 Insert in v1_9 NO CHECK! 98 Test98 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 # 6 locks (t1 + 2 partitions lock/unlock) FLUSH STATUS; CALL sp_select_range(1,5); a b 1 First row, p1 2 First row, p2 3 First row, p3, same as min(a) + 2 in t2 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 14 HANDLER_READ_KEY 6 HANDLER_READ_NEXT 5 HANDLER_WRITE 17 # 14 locks (proc table, t1 + 5 partitions lock/unlock) DROP PROCEDURE sp_insert; DROP PROCEDURE sp_insert_partition; DROP PROCEDURE sp_select_all; DROP PROCEDURE sp_select_partition; DROP PROCEDURE sp_select_range; DROP PROCEDURE sp_select_exact; # # Test EXPLAIN DELETE # SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 1 First row, p1 2 First row, p2 3 First row, p3, same as min(a) + 2 in t2 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 8 Insert in v1_9 NO CHECK! 9 Insert in v1_9_check 18 Insert in v1_25 23 Insert in v1_all 26 Third row, p0, updated 1 31 Insert in v1_25_check 39 Fourth row, p0, updated 1 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 78 No duplicate 91 No duplicate, INSERT_DUP_KEY_UPDATE 98 Test98 104 No duplicate 104 105 No duplicate 111 Test111 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 313 Test313 FLUSH STATUS; EXPLAIN PARTITIONS DELETE FROM t1 WHERE a = 105; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p1 range PRIMARY PRIMARY 4 const # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 17 # 4 locks (1 table + 1 partition lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS DELETE FROM t1 WHERE b = "No duplicate"; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 range b b 131 const # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 17 # 28 locks (1 table + 13 partition lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS DELETE FROM t1 WHERE a = 105; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p1 range PRIMARY PRIMARY 4 const # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 17 # 4 locks (1 table + 1 partition lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS DELETE FROM t1 WHERE b = "No duplicate"; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 range b b 131 const # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 17 # 28 locks (1 table + 13 partition lock/unlock) # # Test DELETE # FLUSH STATUS; DELETE FROM t1 WHERE a = 105; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 4 locks (1 table + 1 partition lock/unlock) # 1 read_key # 1 delete FLUSH STATUS; DELETE FROM t1 WHERE b = "No duplicate"; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 # 28 locks (1 table + 13 partition lock/unlock) # 13 read_key # 1 read_next (if more matches after the first match) # 1 delete FLUSH STATUS; DELETE FROM t1 WHERE a = (SELECT a + 90 FROM t2 WHERE a = 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 2 HANDLER_WRITE 17 # 32 locks (2 table + 13 + 1 partition lock/unlock) # 2 read_key # 2 read_next (if more matches after the first match) # 1 delete EXPLAIN PARTITIONS DELETE FROM t1 WHERE a = (SELECT a + 90 FROM t2 WHERE a = 1); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t1 p0 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t2 p1 const PRIMARY PRIMARY 4 const # Using index FLUSH STATUS; DELETE FROM t1 PARTITION (p0) WHERE a = (SELECT a + 2 FROM t2 WHERE a = 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # Impossible delete, all partitions pruned away after locking! # 8 locks (2 table + 1 PARTITION(p0) + 1 (a = 1) partition lock/unlock) # 1 read_key EXPLAIN PARTITIONS DELETE FROM t1 PARTITION (p0) WHERE a = (SELECT a + 2 FROM t2 WHERE a = 1); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # No matching rows after partition pruning 2 SUBQUERY t2 p1 const PRIMARY PRIMARY 4 const # Using index # # Test multi table DELETE # SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 1 First row, p1 2 First row, p2 3 First row, p3, same as min(a) + 2 in t2 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 8 Insert in v1_9 NO CHECK! 9 Insert in v1_9_check 18 Insert in v1_25 23 Insert in v1_all 26 Third row, p0, updated 1 31 Insert in v1_25_check 39 Fourth row, p0, updated 1 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 98 Test98 104 No duplicate 104 111 Test111 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 313 Test313 SELECT * FROM t2 ORDER BY a; a b 1 First row, p1 4 First row, p4, t1.b:First row, p4 FLUSH STATUS; EXPLAIN PARTITIONS DELETE t1, t2 FROM t1, t2 WHERE t1.a = t2.a AND t1.b = 'First row, p1'; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ref PRIMARY,b b 131 const # Using where 1 SIMPLE t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 eq_ref PRIMARY PRIMARY 4 test.t1.a # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 56 HANDLER_WRITE 17 # 56 locks (2 tables + 26 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS DELETE FROM t2, t1 USING t2, t1 WHERE t1.b = t2.b AND t2.a = 4; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p4 const PRIMARY PRIMARY 4 const # NULL 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ref b b 131 const # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # 32 locks (2 tables , 13 + 1 partition lock/unlock) FLUSH STATUS; DELETE t1, t2 FROM t1, t2 WHERE t1.a = t2.a AND t1.b = 'First row, p1'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 2 HANDLER_EXTERNAL_LOCK 56 HANDLER_READ_KEY 15 HANDLER_READ_NEXT 1 HANDLER_READ_RND 1 HANDLER_WRITE 17 # 56 locks (2 tables + 26 partitions lock/unlock) # 15 read_key # 1 read_next, read_rnd # 2 delete FLUSH STATUS; DELETE FROM t2, t1 USING t2, t1 WHERE t1.b = t2.b AND t2.a = 4; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 14 HANDLER_WRITE 17 # 32 locks (2 tables , 13 + 1 partition lock/unlock) # 15 read_key # 1 read_next, read_rnd # 2 delete SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 2 First row, p2 3 First row, p3, same as min(a) + 2 in t2 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 8 Insert in v1_9 NO CHECK! 9 Insert in v1_9_check 18 Insert in v1_25 23 Insert in v1_all 26 Third row, p0, updated 1 31 Insert in v1_25_check 39 Fourth row, p0, updated 1 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 98 Test98 104 No duplicate 104 111 Test111 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 313 Test313 SELECT * FROM t2 ORDER BY a; a b 4 First row, p4, t1.b:First row, p4 # # Test subquery IN expression # FLUSH STATUS; EXPLAIN PARTITIONS SELECT count(*) FROM t1 p WHERE a IN (1, 2, 9); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE p p1,p2,p9 index PRIMARY b 131 NULL 4 Using where; Using index SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_WRITE 17 # 8 locks (1 table, 3 partitions, lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS SELECT count(*) FROM t1 p WHERE a IN (SELECT a + 1 FROM t2 WHERE a = 4); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE p p5 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t2 p4 const PRIMARY PRIMARY 4 const 1 Using index SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_KEY 2 HANDLER_WRITE 17 # 32 locks (2 table, 13 + 1 partitions, lock/unlock) # # Test triggers # Tables used in triggers cannot be pruned for locks. # Tables with triggers cannot be pruned for locks if # BEFORE INSERT/UPDATE trigger uses any partitioning columns. # CREATE TABLE t3 (old_a int, new_a int, old_b varchar(255), new_b varchar(255), key (new_a, new_b), key(new_b)) PARTITION BY HASH (new_a) PARTITIONS 5; CREATE TRIGGER t1_after_insert AFTER INSERT ON t1 FOR EACH ROW INSERT INTO t3 VALUES (2, NEW.a, NULL, CONCAT("AI: ", NEW.b)); CREATE TRIGGER t1_after_update AFTER UPDATE ON t1 FOR EACH ROW INSERT INTO t3 VALUES (OLD.a, NEW.a, CONCAT("AU: ", OLD.b), CONCAT("AU: ", NEW.b)); FLUSH STATUS; INSERT INTO t1 VALUES (2, "First row, p2") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", duplicate key 2"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 19 # 28 locks (3 tables, 1 + 5 + 5 partition lock/unlock) # (t1 to insert, t3 after insert trigger, t3 after update trigger) SELECT * FROM t1 WHERE a = 2; a b 2 First row, p2, duplicate key 2 FLUSH STATUS; REPLACE INTO t1 VALUES (0, "First row, p0 REPLACED"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 19 # 16 locks (2 tables, 1 + 5 partition lock/unlock) # (t1 to replace, t3 after insert trigger) # Note that since there is no delete trigger, REPLACE cheats by # doing update instead of delete+insert! SELECT * FROM t1 WHERE a = 0; a b 0 First row, p0 REPLACED FLUSH STATUS; EXPLAIN PARTITIONS UPDATE t1 SET b = CONCAT(b, ", UPDATED2") WHERE a = 3; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p3 range PRIMARY PRIMARY 4 const # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_WRITE 17 # 16 locks (2 tables, 1 + 5 partition lock/unlock) # (t1 to insert, t3 after update trigger) CREATE TRIGGER t1_after_delete AFTER DELETE ON t1 FOR EACH ROW INSERT INTO t3 VALUES (OLD.a, NULL, CONCAT("AD: ", OLD.b), NULL); FLUSH STATUS; REPLACE INTO t1 VALUES (0, "First row, p0 REPLACED2"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_WRITE 21 # 28 locks (3 tables, 1 + 5 + 5 partition lock/unlock) # (t1 to replace, t3 after insert trigger, t3 after delete trigger) # Note that now it does delete+insert instead, due to delete trigger! SELECT * FROM t1 WHERE a = 0; a b 0 First row, p0 REPLACED2 CREATE TRIGGER t1_before_delete BEFORE DELETE ON t1 FOR EACH ROW INSERT INTO t3 VALUES (OLD.a, NULL, CONCAT("BD: ", OLD.b), NULL); FLUSH STATUS; REPLACE INTO t1 VALUES (0, "First row, p0 REPLACED3"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 40 HANDLER_READ_KEY 1 HANDLER_WRITE 22 # 40 locks (4 tables, 1 + 5 + 5 + 5 partition lock/unlock) # (t1 to replace, t3 after insert trigger, t3 before delete trigger, # t3 after delete trigger) SELECT * FROM t1 WHERE a = 0; a b 0 First row, p0 REPLACED3 CREATE TRIGGER t1_before_update BEFORE UPDATE ON t1 FOR EACH ROW INSERT INTO t3 VALUES (OLD.a, NEW.a, CONCAT("BU: ", OLD.b), CONCAT("BU: ", NEW.b)); FLUSH STATUS; INSERT INTO t1 VALUES (2, "First row, p2") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", duplicate key 2"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 64 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 20 # No pruning possible, due to BEFORE UPDATE trigger # 64 locks (4 tables, 13 + 5 + 5 + 5 partitions lock/unlock) # t1, t3 after insert, t3 before update, t3 after update SELECT * FROM t1 WHERE a = 2; a b 2 First row, p2, duplicate key 2, duplicate key 2 FLUSH STATUS; REPLACE INTO t1 VALUES (0, "First row, p0 REPLACED4"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 40 HANDLER_READ_KEY 1 HANDLER_WRITE 22 # 40 locks (4 tables, 1 + 5 + 5 + 5 partition lock/unlock) # t1, t3 after insert, t3 before delete, t3 after delete SELECT * FROM t1 WHERE a = 0; a b 0 First row, p0 REPLACED4 FLUSH STATUS; EXPLAIN PARTITIONS UPDATE t1 SET b = CONCAT(b, ", UPDATED2") WHERE a = 3; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p3 range PRIMARY PRIMARY 4 const # Using where; Using temporary SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 52 HANDLER_WRITE 17 # No pruning possible, due to BEFORE UPDATE trigger # 52 locks (3 tables, 13 + 5 + 5 partition lock/unlock) # t1, before update, after update SELECT * FROM t1 WHERE a = 3; a b 3 First row, p3, same as min(a) + 2 in t2 FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", UPDATED2") WHERE a = 3; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 52 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_UPDATE 1 HANDLER_WRITE 19 # 52 locks (3 tables, 13 + 5 + 5 partition lock/unlock) # t1, before update, after update SELECT * FROM t1 WHERE a = 3; a b 3 First row, p3, same as min(a) + 2 in t2, UPDATED2 EXPLAIN PARTITIONS INSERT INTO t1 VALUES (12, "First row, p12"); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used FLUSH STATUS; INSERT INTO t1 VALUES (12, "First row, p12"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_WRITE 19 # 16 locks (2 table, 1 + 5 partition lock/unlock) # t1, t3 after insert trigger CREATE TRIGGER t1_before_insert BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t3 VALUES (1, NEW.a, NULL, CONCAT("BI: ", NEW.b)); FLUSH STATUS; INSERT INTO t1 VALUES (11, "First row, p11"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 52 HANDLER_WRITE 20 # Nothing can be pruned, due to triggers. # 52 locks (3 tables, 13 + 5 + 5 partition lock/unlock) # t1, t3 before insert, t3 after insert. FLUSH STATUS; EXPLAIN PARTITIONS DELETE FROM t1 WHERE a = 98; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p7 range PRIMARY PRIMARY 4 const # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 17 # 28 locks (3 tables, 1 + 5 + 5 partitions) # t1, t3 before delete trigger, t3 after delete trigger # part 7, part 0-4, part 0-4. SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 REPLACED4 2 First row, p2, duplicate key 2, duplicate key 2 3 First row, p3, same as min(a) + 2 in t2, UPDATED2 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 8 Insert in v1_9 NO CHECK! 9 Insert in v1_9_check 11 First row, p11 12 First row, p12 18 Insert in v1_25 23 Insert in v1_all 26 Third row, p0, updated 1 31 Insert in v1_25_check 39 Fourth row, p0, updated 1 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 98 Test98 104 No duplicate 104 111 Test111 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 313 Test313 FLUSH STATUS; DELETE FROM t1 WHERE a = 98; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_WRITE 19 # 28 locks (3 tables, 1 + 5 + 5 partitions) # t1, t3 before delete trigger, t3 after delete trigger SELECT * FROM t1 ORDER BY a; a b 0 First row, p0 REPLACED4 2 First row, p2, duplicate key 2, duplicate key 2 3 First row, p3, same as min(a) + 2 in t2, UPDATED2 4 First row, p4, t2.b:First row, p4 5 REPLACE second, max(a) in t2: 4 8 Insert in v1_9 NO CHECK! 9 Insert in v1_9_check 11 First row, p11 12 First row, p12 18 Insert in v1_25 23 Insert in v1_all 26 Third row, p0, updated 1 31 Insert in v1_25_check 39 Fourth row, p0, updated 1 52 Fifth row, p0, updated 1 65 No duplicate, INSERT_DUP_KEY_UPDATE 104 No duplicate 104 111 Test111 113 Second row, p0, updated 1, updated 2 -> p8, updated 3, updated 4 -> p9 313 Test313 SELECT * FROM t2 ORDER BY a; a b 4 First row, p4, t1.b:First row, p4 SELECT * FROM t3 ORDER BY new_a; old_a new_a old_b new_b 0 NULL AD: First row, p0 REPLACED NULL 0 NULL AD: First row, p0 REPLACED2 NULL 0 NULL AD: First row, p0 REPLACED3 NULL 0 NULL BD: First row, p0 REPLACED2 NULL 0 NULL BD: First row, p0 REPLACED3 NULL 1 11 NULL BI: First row, p11 2 0 NULL AI: First row, p0 REPLACED 2 0 NULL AI: First row, p0 REPLACED2 2 0 NULL AI: First row, p0 REPLACED3 2 0 NULL AI: First row, p0 REPLACED4 2 11 NULL AI: First row, p11 2 12 NULL AI: First row, p12 2 2 AU: First row, p2 AU: First row, p2, duplicate key 2 2 2 AU: First row, p2, duplicate key 2 AU: First row, p2, duplicate key 2, duplicate key 2 2 2 BU: First row, p2, duplicate key 2 BU: First row, p2, duplicate key 2, duplicate key 2 3 3 AU: First row, p3, same as min(a) + 2 in t2 AU: First row, p3, same as min(a) + 2 in t2, UPDATED2 3 3 BU: First row, p3, same as min(a) + 2 in t2 BU: First row, p3, same as min(a) + 2 in t2, UPDATED2 98 NULL AD: Test98 NULL 98 NULL BD: Test98 NULL TRUNCATE TABLE t1; DROP TRIGGER t1_before_insert; DROP TRIGGER t1_before_update; DROP TRIGGER t1_before_delete; DROP TRIGGER t1_after_insert; DROP TRIGGER t1_after_update; DROP TRIGGER t1_after_delete; # # Test BEFORE INSERT TRIGGER depending on partitioning column # CREATE TRIGGER t1_before_insert BEFORE INSERT ON t1 FOR EACH ROW SET NEW.b = CONCAT("b: ", NEW.b, " a: ", NEW.a); FLUSH STATUS; INSERT INTO t1 VALUES (0, "first row, p0"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_WRITE 18 # 28 locks (1 tables, 13 partitions lock/unlock) FLUSH STATUS; INSERT INTO t1 VALUES (0, "Second row, p0") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", duplicate key"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 28 locks (1 tables, 13 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", Updated") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET a = 1, b = CONCAT(b, ", a was 0") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # Updating partitioning column, no lock pruning # 28 locks (1 tables, 13 partitions lock/unlock) # # Test BEFORE INSERT TRIGGER not depending on partitioning column # DROP TRIGGER t1_before_insert; CREATE TRIGGER t1_before_insert BEFORE INSERT ON t1 FOR EACH ROW SET NEW.b = CONCAT("b: ", NEW.b); FLUSH STATUS; INSERT INTO t1 VALUES (0, "first row, p0"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; INSERT INTO t1 VALUES (0, "Second row, p0") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", duplicate key"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", Updated") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET a = 2, b = CONCAT(b, ", a was 0") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # Updating partitioning column, no lock pruning # 28 locks (1 tables, 13 partitions lock/unlock) # # Test BEFORE UPDATE TRIGGER OLD depending on partitioning column. # Note that it does not update any partitioning column. # CREATE TRIGGER t1_before_update BEFORE UPDATE ON t1 FOR EACH ROW SET NEW.b = CONCAT("old a: ", OLD.a, " new b: ", NEW.b); FLUSH STATUS; INSERT INTO t1 VALUES (0, "1st p0"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; INSERT INTO t1 VALUES (0, "2nd p0") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", dup key"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", Updated") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # Lock pruning possible! # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET a = 3, b = CONCAT(b, ", a was 0") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # Updating partitioning column, no lock pruning # 28 locks (1 tables, 13 partitions lock/unlock) # # Test BEFORE UPDATE TRIGGER NEW depending on partitioning column. # Note that it does not update any partitioning column. # DROP TRIGGER t1_before_update; CREATE TRIGGER t1_before_update BEFORE UPDATE ON t1 FOR EACH ROW SET NEW.b = CONCAT("new a: ", NEW.a, " new b: ", NEW.b); FLUSH STATUS; INSERT INTO t1 VALUES (0, "1st p0"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; INSERT INTO t1 VALUES (0, "2nd p0") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", dup key"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 28 locks (1 tables, 13 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", Updated") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 28 locks (1 tables, 13 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET a = 4, b = CONCAT(b, ", a was 0") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # Updating partitioning column, no lock pruning # 28 locks (1 tables, 13 partitions lock/unlock) # # Test BEFORE UPDATE TRIGGER not depending on partitioning column # DROP TRIGGER t1_before_update; CREATE TRIGGER t1_before_update BEFORE UPDATE ON t1 FOR EACH ROW SET NEW.b = CONCAT("new b: ", NEW.b); FLUSH STATUS; INSERT INTO t1 VALUES (0, "1st p0"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 18 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; INSERT INTO t1 VALUES (0, "2nd p0") ON DUPLICATE KEY UPDATE b = CONCAT(b, ", dup key"); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 18 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET b = CONCAT(b, ", Updated") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_KEY 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 # 4 locks (1 tables, 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1 SET a = 5, b = CONCAT(b, ", a was 0") WHERE a = 0; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 28 HANDLER_READ_KEY 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 # Updating partitioning column, no lock pruning # 28 locks (1 tables, 13 partitions lock/unlock) SELECT * FROM t1 ORDER BY a; a b 1 b: first row, p0 a: 0, duplicate key, Updated, a was 0 2 b: first row, p0, duplicate key, Updated, a was 0 3 old a: 0 new b: old a: 0 new b: old a: 0 new b: b: 1st p0, dup key, Updated, a was 0 4 new a: 4 new b: new a: 0 new b: new a: 0 new b: b: 1st p0, dup key, Updated, a was 0 5 new b: new b: new b: b: 1st p0, dup key, Updated, a was 0 DROP TABLE t1, t2, t3; # # Test of BEFORE UPDATE triggers and multi UPDATE # CREATE TABLE t1 (a int, b varchar(128), KEY (b)) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 13; CREATE TABLE t2 (a int PRIMARY KEY, b varchar(128)) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 13; INSERT INTO t1 VALUES (1, "MultiUpdate1"); INSERT INTO t1 VALUES (2, "MultiUpdate2"); INSERT INTO t2 VALUES (1, "MultiUpdate1"); INSERT INTO t2 VALUES (2, "MultiUpdate2"); CREATE TRIGGER t1_before_update BEFORE UPDATE ON t1 FOR EACH ROW SET NEW.b = CONCAT("new1 b: ", NEW.b); CREATE TRIGGER t2_before_update BEFORE UPDATE ON t2 FOR EACH ROW SET NEW.b = CONCAT("new2 a: ", NEW.a, " new2 b: ", NEW.b); FLUSH STATUS; EXPLAIN EXTENDED UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ",(1) t2.b:", t2.b), t2.b = CONCAT(t2.b, ",(1) t1.b:", t1.b) WHERE t2.b = t1.b and t1.a = 1; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL b NULL NULL NULL # 100.00 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_WRITE 17 # 32 locks (2 table, 13 + 1 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ",(1) t2.b:", t2.b), t2.b = CONCAT(t2.b, ",(1) t1.b:", t1.b) WHERE t2.b = t1.b and t1.a = 1; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p1 ALL b NULL NULL NULL # Using where 1 SIMPLE t2 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ALL NULL NULL NULL NULL # Using where; Using join buffer (Block Nested Loop) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_WRITE 17 # 32 locks (2 table, 13 + 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ",(1) t2.b:", t2.b), t2.b = CONCAT(t2.b, ",(1) t1.b:", t1.b) WHERE t2.b = t1.b and t1.a = 1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 32 HANDLER_READ_FIRST 14 HANDLER_READ_KEY 16 HANDLER_READ_RND 2 HANDLER_READ_RND_NEXT 21 HANDLER_UPDATE 2 HANDLER_WRITE 19 # 32 locks (2 table, 13 + 1 partitions lock/unlock) # 14 read_first # 16 read_key # 2 read_rnd # 21 rean_rnd_next # 2 update FLUSH STATUS; EXPLAIN EXTENDED UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ",(2) t2.b:", t2.b), t2.b = CONCAT(t2.b, ",(2) t1.b:", t1.b) WHERE t1.b = t2.b and t2.a = 2; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 const PRIMARY PRIMARY 4 const # 100.00 NULL 1 SIMPLE t1 ref b b 131 const # 100.00 NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 56 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # Trigger touches partitioning column, unable to prune locks # 56 locks (2 tables + 2 * 13 partitions lock/unlock) FLUSH STATUS; EXPLAIN PARTITIONS UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ",(2) t2.b:", t2.b), t2.b = CONCAT(t2.b, ",(2) t1.b:", t1.b) WHERE t1.b = t2.b and t2.a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 const PRIMARY PRIMARY 4 const # NULL 1 SIMPLE t1 p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 ref b b 131 const # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 56 HANDLER_READ_KEY 1 HANDLER_WRITE 17 # Trigger touches partitioning column, unable to prune locks # 56 locks (2 tables + 2 * 13 partitions lock/unlock) FLUSH STATUS; UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ",(2) t2.b:", t2.b), t2.b = CONCAT(t2.b, ",(2) t1.b:", t1.b) WHERE t1.b = t2.b and t2.a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 56 HANDLER_READ_KEY 15 HANDLER_READ_NEXT 1 HANDLER_READ_RND 1 HANDLER_READ_RND_NEXT 2 HANDLER_UPDATE 2 HANDLER_WRITE 18 # Due to the BEFORE UPDATE trigger on t2 that looks at 'a', # no locks can be pruned. # 56 locks (2 table, 2 * 13 partitions lock/unlock) # 15 read_key # 1 read_next, read_rnd # 2 read_rnd_next # 2 update SELECT * FROM t1 ORDER BY a; a b 1 new1 b: MultiUpdate1,(1) t2.b:MultiUpdate1 2 new1 b: MultiUpdate2,(2) t2.b:MultiUpdate2 SELECT * FROM t2 ORDER BY a; a b 1 new2 a: 1 new2 b: MultiUpdate1,(1) t1.b:MultiUpdate1 2 new2 a: 2 new2 b: MultiUpdate2,(2) t1.b:MultiUpdate2 DROP TABLE t1, t2; # # Test constant propagation in WHERE clause # (Currently no propagation is done before locking). CREATE TABLE t1 (a int, b varchar(128), KEY (b)) ENGINE = InnoDB PARTITION BY RANGE (a) (PARTITION pNeg VALUES LESS THAN (0), PARTITION p0 VALUES LESS THAN (1), PARTITION p1 VALUES LESS THAN (2), PARTITION p2 VALUES LESS THAN (3), PARTITION p3 VALUES LESS THAN (4), PARTITION pMax VALUES LESS THAN MAXVALUE); CREATE TABLE t2 (a int PRIMARY KEY, b varchar(128)) ENGINE = InnoDB PARTITION BY RANGE (a) (PARTITION pNeg VALUES LESS THAN (0), PARTITION p0 VALUES LESS THAN (1), PARTITION p1 VALUES LESS THAN (2), PARTITION p2 VALUES LESS THAN (3), PARTITION p3 VALUES LESS THAN (4), PARTITION pMax VALUES LESS THAN MAXVALUE); INSERT INTO t1 VALUES (1, "Const1"); INSERT INTO t2 VALUES (1, "Const1"); INSERT INTO t1 VALUES (2, "Const2"); INSERT INTO t2 VALUES (2, "Const2"); INSERT INTO t1 VALUES (3, "Const3"); INSERT INTO t2 VALUES (3, "Const3"); # Test simple '=' propagation FLUSH STATUS; SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t2.a = 1; a b a b 1 Const1 1 Const1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 18 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 18 locks (2 tables, 6 + 1 partitions lock/unlock) FLUSH STATUS; SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t1.a = 1; a b a b 1 Const1 1 Const1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 18 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 18 locks (2 tables, 1 + 6 partitions lock/unlock) # Test OR propagation FLUSH STATUS; SELECT * FROM t1, t2 WHERE t1.a = t2.a AND (t2.a = 1 OR t2.a = 2); a b a b 1 Const1 1 Const1 2 Const2 2 Const2 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 4 HANDLER_READ_RND_NEXT 4 HANDLER_WRITE 17 # 20 locks (2 tables, 6 + 2 partitions lock/unlock) # But it will be scanned pruned! EXPLAIN PARTITIONS SELECT * FROM t1, t2 WHERE t1.a = t2.a AND (t1.a = 1 OR t1.a = 2); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p1,p2 ALL NULL NULL NULL NULL # Using where 1 SIMPLE t2 p1,p2 eq_ref PRIMARY PRIMARY 4 test.t1.a # NULL # Test closed range propagation FLUSH STATUS; SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t1.a >= 1 AND t1.a <=3; a b a b 1 Const1 1 Const1 2 Const2 2 Const2 3 Const3 3 Const3 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 22 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 6 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 # 22 locks (2 tables, 6 + 3 partitions lock/unlock) # But it will be scanned pruned! EXPLAIN PARTITIONS SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t1.a >= 1 AND t1.a <=3; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p1,p2,p3 range PRIMARY PRIMARY 4 NULL # Using where 1 SIMPLE t1 p1,p2,p3 ALL NULL NULL NULL NULL # Using where; Using join buffer (Block Nested Loop) # Test open range propagation FLUSH STATUS; SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t2.a >= 1; a b a b 1 Const1 1 Const1 2 Const2 2 Const2 3 Const3 3 Const3 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 24 HANDLER_READ_FIRST 4 HANDLER_READ_KEY 7 HANDLER_READ_RND_NEXT 7 HANDLER_WRITE 17 # 24 locks (2 tables, 6 + 4 partitions lock/unlock) # But is scanned pruned! EXPLAIN PARTITIONS SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t2.a >= 1; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p1,p2,p3,pMax ALL NULL NULL NULL NULL # Using where 1 SIMPLE t2 p1,p2,p3,pMax eq_ref PRIMARY PRIMARY 4 test.t1.a # NULL FLUSH STATUS; SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t2.a <= 1; a b a b 1 Const1 1 Const1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 22 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 4 HANDLER_READ_RND_NEXT 4 HANDLER_WRITE 17 # 22 locks (2 tables, 6 + 3 partitions lock/unlock) # But is scanned pruned! EXPLAIN PARTITIONS SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t2.a <= 1; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 pNeg,p0,p1 ALL NULL NULL NULL NULL # Using where 1 SIMPLE t2 pNeg,p0,p1 eq_ref PRIMARY PRIMARY 4 test.t1.a # NULL # Test IN propagation FLUSH STATUS; SELECT * FROM t1, t2 WHERE t1.a = t2.a and t2.a IN (1, 3); a b a b 1 Const1 1 Const1 3 Const3 3 Const3 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 4 HANDLER_READ_RND_NEXT 4 HANDLER_WRITE 17 # 20 locks (2 tables, 6 + 2 partitions lock/unlock) # But is scanned pruned! EXPLAIN PARTITIONS SELECT * FROM t1, t2 WHERE t1.a = t2.a AND t1.a IN (1, 3); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p1,p3 ALL NULL NULL NULL NULL # Using where 1 SIMPLE t2 p1,p3 eq_ref PRIMARY PRIMARY 4 test.t1.a # NULL # Same for UPDATE FLUSH STATUS; UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ", t2.b:", t2.b) WHERE t1.a = t2.a and t2.a IN (2, 3); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 6 HANDLER_READ_RND 2 HANDLER_READ_RND_NEXT 7 HANDLER_UPDATE 2 HANDLER_WRITE 19 # 20 locks (2 tables, 6 + 2 partitions lock/unlock) # But is scanned pruned! EXPLAIN PARTITIONS UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ", t2.b:", t2.b) WHERE t1.a = t2.a and t2.a IN (2, 3); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p2,p3 ALL NULL NULL NULL NULL # Using where 1 SIMPLE t2 p2,p3 eq_ref PRIMARY PRIMARY 4 test.t1.a # NULL FLUSH STATUS; UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ", t2.b:", t2.b), t2.b = CONCAT(t2.b, ", t1.b:", t1.b) WHERE t1.a = t2.a and t2.a = 1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 18 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 3 HANDLER_READ_RND 1 HANDLER_READ_RND_NEXT 4 HANDLER_UPDATE 2 HANDLER_WRITE 18 # 18 locks (2 tables, 6 + 1 partitions lock/unlock) FLUSH STATUS; UPDATE t1, t2 SET t1.b = CONCAT(t1.b, ", t2.b:", t2.b), t2.b = CONCAT(t2.b, ", t1.b:", t1.b) WHERE t1.a = t2.a and t1.a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 18 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 3 HANDLER_READ_RND 1 HANDLER_READ_RND_NEXT 4 HANDLER_UPDATE 2 HANDLER_WRITE 18 # 18 locks (2 tables, 1 + 6 partitions lock/unlock) SELECT * FROM t1 ORDER BY a; a b 1 Const1, t2.b:Const1 2 Const2, t2.b:Const2, t2.b:Const2 3 Const3, t2.b:Const3 SELECT * FROM t2 ORDER BY a; a b 1 Const1, t1.b:Const1 2 Const2, t1.b:Const2, t2.b:Const2 3 Const3 # Same for DELETE FLUSH STATUS; DELETE t1 FROM t1, t2 WHERE t1.a = t2.a AND t2.a IN (1, 9); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 3 HANDLER_READ_RND_NEXT 3 HANDLER_WRITE 17 # 20 locks (2 tables, 6 + 2 partitions lock/unlock) # But is scanned pruned! EXPLAIN PARTITIONS DELETE t1 FROM t1, t2 WHERE t1.a = t2.a AND t2.a IN (1, 9); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p1,pMax ALL NULL NULL NULL NULL # Using where 1 SIMPLE t2 p1,pMax eq_ref PRIMARY PRIMARY 4 test.t1.a # Using index SELECT * FROM t1 ORDER BY a; a b 2 Const2, t2.b:Const2, t2.b:Const2 3 Const3, t2.b:Const3 FLUSH STATUS; DELETE t1 FROM t1, t2 WHERE t1.a = t2.a and t2.a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 18 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 18 locks (2 tables, 6 + 1 partitions lock/unlock) FLUSH STATUS; DELETE t1 FROM t1, t2 WHERE t1.a = t2.a and t1.a = 1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 18 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 1 HANDLER_WRITE 17 # 18 locks (2 tables, 1 + 6 partitions lock/unlock) SELECT * FROM t1 ORDER BY a; a b 3 Const3, t2.b:Const3 SELECT * FROM t2 ORDER BY a; a b 1 Const1, t1.b:Const1 2 Const2, t1.b:Const2, t2.b:Const2 3 Const3 FLUSH STATUS; DELETE t1, t2 FROM t1, t2 WHERE t1.a = t2.a and t2.a = 3; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 2 HANDLER_EXTERNAL_LOCK 18 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 3 HANDLER_READ_RND 1 HANDLER_READ_RND_NEXT 2 HANDLER_WRITE 17 # 18 locks (2 tables, 6 + 1 partitions lock/unlock) SELECT * FROM t1 ORDER BY a; a b SELECT * FROM t2 ORDER BY a; a b 1 Const1, t1.b:Const1 2 Const2, t1.b:Const2, t2.b:Const2 DROP TABLE t1, t2; # # DO is not supported by WL#4443 !!! # Test of DO (eg. SELECT without returning values) # CREATE TABLE t1 (a INT, b VARCHAR(66)) PARTITION BY HASH (a) PARTITIONS 3; INSERT INTO t1 VALUES (1, "One"), (2, "Two"), (3, "Three"), (4, "Four"), (5, "Five"), (6, "Six"), (0, "Zero"); DO (SELECT a FROM t1); Warnings: Error 1242 Subquery returns more than 1 row FLUSH STATUS; DO (SELECT @x:= b FROM t1 WHERE a = 5); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_RND_NEXT 3 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) SELECT @x; @x Five FLUSH STATUS; DO (SELECT @x:= b FROM t1 WHERE a = 5 or a = 1 ORDER BY b LIMIT 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) SELECT @x; @x Five # # SET is not supported by WL#4443 !!! # Test of SET (eg. SELECT only setting an internal variable from # the returning value) # FLUSH STATUS; SET @x = (SELECT a FROM t1 WHERE a = 5); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_RND_NEXT 3 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) SELECT @x; @x 5 FLUSH STATUS; SET @y = (SELECT @x:= b FROM t1 WHERE a = 5); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_RND_NEXT 3 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) SELECT @x, @y; @x @y Five Five FLUSH STATUS; SET @y = (SELECT @x:= b FROM t1 WHERE a = 5 or a = 1 ORDER BY b LIMIT 1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 # 8 locks (1 table + 3 partitions lock/unlock) SELECT @x, @y; @x @y Five Five # # LOAD DATA is not supported by WL#4443 !!! # FLUSH STATUS; SELECT * FROM t1 WHERE a IN (1, 4) INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1.part1'; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_RND_NEXT 3 HANDLER_WRITE 17 # 4 locks (1 table + 1 partitions lock/unlock) DELETE FROM t1 WHERE a IN (1, 4); SELECT * FROM t1 ORDER BY a, b; a b 0 Zero 2 Two 3 Three 5 Five 6 Six FLUSH STATUS; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1.part1' INTO TABLE t1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_WRITE 19 # 8 locks (1 table + 3 partitions lock/unlock) SELECT * FROM t1 ORDER BY a, b; a b 0 Zero 1 One 2 Two 3 Three 4 Four 5 Five 6 Six DELETE FROM t1 WHERE a IN (1, 4); SELECT * FROM t1 ORDER BY a, b; a b 0 Zero 2 Two 3 Three 5 Five 6 Six # It is possible to avoid locking with explicit partitioning selection! FLUSH STATUS; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1.part1' INTO TABLE t1 PARTITION(p1); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_WRITE 19 # 4 locks (1 table + 1 partitions lock/unlock) SELECT * FROM t1 ORDER BY a, b; a b 0 Zero 1 One 2 Two 3 Three 4 Four 5 Five 6 Six DROP TABLE t1; # # Test EXCHANGE PARTITION to only lock exchanged partition # CREATE TABLE t1 (a INT, b VARCHAR(44)); CREATE TABLE t2 (a INT, b VARCHAR(44)) PARTITION BY HASH (a) PARTITIONS 3; INSERT INTO t1 VALUES (10, "Ten"), (13, "Thirteen"), (16, "Sixteen"); INSERT INTO t2 VALUES (0, "Zero"), (1, "One"), (2, "Two"), (3, "Three"), (4, "Four"), (5, "Five"), (6, "Six"), (7, "Seven"), (8, "Eight"); FLUSH STATUS; ALTER TABLE t2 EXCHANGE PARTITION p1 WITH TABLE t1; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 6 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_RND_NEXT 4 HANDLER_WRITE 17 # 6 locks (2 table + 1 partition lock/unlock) SELECT * FROM t1 ORDER BY a; a b 1 One 4 Four 7 Seven SELECT * FROM t2 ORDER BY a; a b 0 Zero 2 Two 3 Three 5 Five 6 Six 8 Eight 10 Ten 13 Thirteen 16 Sixteen DROP TABLE t1, t2; # # Prepared statement # CREATE TABLE t1 (N int, M tinyint) PARTITION BY HASH (N) PARTITIONS 3; INSERT INTO t1 VALUES (1,0),(1,0),(2,0),(2,0),(3,0); PREPARE stmt FROM 'UPDATE t1 AS P1 INNER JOIN (SELECT N FROM t1 GROUP BY N HAVING COUNT(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2'; FLUSH STATUS; EXECUTE stmt; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 6 HANDLER_READ_KEY 16 HANDLER_READ_NEXT 4 HANDLER_READ_RND 2 HANDLER_READ_RND_NEXT 20 HANDLER_UPDATE 6 HANDLER_WRITE 22 # 16 locks (2 table + 6 partition lock/unlock) SELECT * FROM t1 ORDER BY N, M; N M 1 2 1 2 2 2 2 2 3 0 DEALLOCATE PREPARE stmt; PREPARE stmt FROM 'SELECT * FROM t1 WHERE N = 2'; FLUSH STATUS; EXECUTE stmt; N M 2 2 2 2 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 4 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 1 HANDLER_READ_RND_NEXT 3 HANDLER_WRITE 17 # 4 locks (1 table + 1 partition lock/unlock) DROP TABLE t1; # Check if we can infer from condition on partition fields that # no records will match. CREATE TABLE t1 ( a int NOT NULL) PARTITION BY HASH(a) PARTITIONS 2; INSERT INTO t1 VALUES (1),(2),(3); FLUSH STATUS; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a=5 AND a=6; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 2 HANDLER_WRITE 17 # 2 locks (1 table + 0 partition lock/unlock) FLUSH STATUS; SELECT * FROM t1 WHERE a=5 AND a=6; a SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_EXTERNAL_LOCK 2 HANDLER_WRITE 17 # 2 locks (1 table + 0 partition lock/unlock) DROP TABLE t1; # # Test of subqueries in INSERT # CREATE TABLE t1 (a INT, b VARCHAR(64)); CREATE TABLE t2 (a INT, b VARCHAR(64)) PARTITION BY HASH (a) PARTITIONS 3; INSERT INTO t1 VALUES (1, "test 1"); INSERT INTO t2 VALUES (SELECT * FROM t1); ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM t1)' at line 1 FLUSH STATUS; INSERT INTO t2 VALUES ((SELECT a FROM t1), (SELECT b FROM t1)); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 4 HANDLER_WRITE 18 # 12 locks (3 tables + 3 partitions) x lock/unlock # I.e. No lock pruning possible FLUSH STATUS; INSERT INTO t2 VALUES (1 + (SELECT a FROM t1), CONCAT("subq: ", (SELECT b FROM t1))); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 4 HANDLER_WRITE 18 # 12 locks (3 tables + 3 partitions) x lock/unlock # I.e. No lock pruning possible SELECT * FROM t2; a b 1 test 1 2 subq: test 1 DROP TABLE t1, t2; CREATE TABLE t1 (a INT, b INT) PARTITION BY HASH (a) PARTITIONS 3; CREATE TABLE t2 (a INT, b INT) PARTITION BY HASH (a) PARTITIONS 3; INSERT INTO t1 VALUES (1, 1), (2, 0), (4, -1), (5, 2), (7, -3), (8, -9), (10, 5), (11, 9); FLUSH STATUS; INSERT INTO t2 VALUES ((SELECT max(a) FROM t1), (SELECT min(a) FROM t1)); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 24 HANDLER_READ_FIRST 6 HANDLER_READ_KEY 6 HANDLER_READ_RND_NEXT 22 HANDLER_WRITE 18 # 24 locks (3 tables + 3 x 3 partitions) x lock/unlock # I.e. No lock pruning possible FLUSH STATUS; EXPLAIN PARTITIONS INSERT INTO t2 VALUES ((SELECT max(a) FROM t1), (SELECT min(a) FROM t1)); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # No tables used 3 SUBQUERY t1 p0,p1,p2 ALL NULL NULL NULL NULL # NULL 2 SUBQUERY t1 p0,p1,p2 ALL NULL NULL NULL NULL # NULL SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 24 HANDLER_WRITE 17 # 24 locks (3 tables + 3 x 3 partitions) x lock/unlock # I.e. No lock pruning possible FLUSH STATUS; INSERT INTO t2 VALUES ((SELECT a FROM t1 WHERE a = 1), (SELECT b FROM t1 WHERE a = 2)); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 10 HANDLER_WRITE 18 # 16 locks (3 tables + 3 + 1 + 1 partitions) x lock/unlock # I.e. No lock pruning possible on insert table FLUSH STATUS; EXPLAIN PARTITIONS INSERT INTO t2 VALUES ((SELECT a FROM t1 WHERE a = 1), (SELECT b FROM t1 WHERE a = 2)); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # No tables used 3 SUBQUERY t1 p2 ALL NULL NULL NULL NULL # Using where 2 SUBQUERY t1 p1 ALL NULL NULL NULL NULL # Using where SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_WRITE 17 # 16 locks (3 tables + 3 + 1 + 1 partitions) x lock/unlock # I.e. No lock pruning possible on insert table SELECT * FROM t2 ORDER BY a, b; a b 1 0 11 1 DROP TABLE t1; DROP TABLE t2; # # Test of InnoDB INSERT TABLE with non existing table in trigger # CREATE TABLE t1 (a INT) ENGINE = InnoDB; # Create a table to be used in a trigger on t1 CREATE TABLE t2 (a INT) ENGINE = InnoDB; # Create a trigger on t1 which uses t2 CREATE TRIGGER tr1_1_N BEFORE INSERT ON t1 FOR EACH ROW BEGIN UPDATE t2 SET a = 8 WHERE a > 3 LIMIT 0; END// # Drop t2 to cause a failure when inserting into t1 DROP TABLE t2; INSERT INTO t1 VALUES (1); ERROR 42S02: Table 'test.t2' doesn't exist DROP TABLE t1; CREATE TABLE t1 (a INT) PARTITION BY HASH (a) PARTITIONS 3; INSERT INTO t1 VALUES (1), (3), (9), (2), (8), (7); FLUSH STATUS; CREATE TABLE t2 SELECT * FROM t1 PARTITION (p1, p2); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 21 # 8 locks (2 tables, 2 partitions, lock/unlock) SELECT * FROM t2; a 1 2 7 8 DROP TABLE t2; FLUSH STATUS; CREATE TABLE t2 SELECT * FROM t1 WHERE a IN (1, 3, 9); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 2 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 20 # 8 locks (2 tables, 2 partitions, lock/unlock) SELECT * FROM t2; a 1 3 9 DROP TABLE t1, t2; # # Test subqueries/stored functions with UPDATE/DELETE/SELECT # CREATE TABLE tq (id int PRIMARY KEY auto_increment, query varchar(255), not_select tinyint); CREATE TABLE tsq (id int PRIMARY KEY auto_increment, subquery varchar(255), can_be_locked tinyint); CREATE TABLE t1 (a int, b varchar(255), PRIMARY KEY (a), KEY (b)) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 3; CREATE TABLE t2 (a int, b varchar(255), PRIMARY KEY (a), KEY (b)) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 3; START TRANSACTION; INSERT INTO t1 VALUES (1, "1"); INSERT INTO t1 VALUES (2, "2"); INSERT INTO t1 VALUES (8, "8"); INSERT INTO t2 VALUES (1, "1"); INSERT INTO t2 VALUES (2, "2"); INSERT INTO t2 VALUES (8, "8"); CREATE FUNCTION sf_add_hello(s VARCHAR(240)) RETURNS VARCHAR(246) DETERMINISTIC RETURN CONCAT('hello ', s); CREATE FUNCTION sf_add_1(i INT) RETURNS INT DETERMINISTIC RETURN i + 1; CREATE FUNCTION sf_a_from_t1b_d(s varchar(128)) RETURNS INT DETERMINISTIC BEGIN DECLARE i INT; SELECT a INTO i FROM t1 where b = s; RETURN i; END| CREATE FUNCTION sf_a_from_t1b(s varchar(128)) RETURNS INT BEGIN DECLARE i INT; SELECT a INTO i FROM t1 where b = s; RETURN i; END| INSERT INTO tq (query, not_select) VALUES ("SELECT * FROM t2", 0), ("SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2", 0), ("UPDATE t2 SET b = CONCAT('+', b)", 1), ("UPDATE t2 SET b = sf_add_hello(b)", 1), ("UPDATE t2 SET a = sf_add_1(a) + 4", 1), ("DELETE FROM t2", 1); INSERT INTO tsq (subquery, can_be_locked) VALUES ("(SELECT a FROM t1 WHERE b = '1')", 1), ("7 + (SELECT a FROM t1 WHERE b = '1')", 1), ("sf_a_from_t1b('1')", 1), ("sf_a_from_t1b_d('1')", 1), ("7 + sf_a_from_t1b('1')", 1), ("7 + sf_a_from_t1b_d('1')", 1), ("sf_a_from_t1b('1') AND a = 2", 1), ("sf_a_from_t1b_d('1') AND a = 2", 1), ("(SELECT a FROM t1 WHERE b = '1') AND a = 2", 1), ("(SELECT a FROM t1 WHERE b = '1') OR a = 2", 1), ("(SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2')", 0); set @old_autocommit= @@autocommit; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1 const PRIMARY PRIMARY 4 const # NULL 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); a b 1 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); a b 1 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 const PRIMARY PRIMARY 4 const # NULL 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); a b 8 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); a b 8 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL b 258 NULL # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = sf_a_from_t1b('1'); a b 1 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = sf_a_from_t1b('1'); a b 1 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p1 const PRIMARY PRIMARY 4 const # NULL FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1'); a b 1 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1'); a b 1 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL b 258 NULL # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); a b 8 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); a b 8 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 const PRIMARY PRIMARY 4 const # NULL FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); a b 8 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); a b 8 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 const PRIMARY PRIMARY 4 const # NULL FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; a b SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; a b SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; a b SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; a b SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; a b SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; a b SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1,p2 index PRIMARY b 258 NULL # Using where; Using index 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; a b 1 1 2 2 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 4 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; a b 1 1 2 2 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 4 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 const PRIMARY PRIMARY 4 const # NULL 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT * FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); a b 8 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_KEY 7 HANDLER_READ_NEXT 2 HANDLER_WRITE 17 EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1 const PRIMARY PRIMARY 4 const # NULL 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 const PRIMARY PRIMARY 4 const # NULL 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); sf_add_1(a) - 1 sf_add_hello(b) 8 hello 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); sf_add_1(a) - 1 sf_add_hello(b) 8 hello 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL b 258 NULL # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b('1'); sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b('1'); sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p1 const PRIMARY PRIMARY 4 const # NULL FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1'); sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1'); sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL b 258 NULL # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); sf_add_1(a) - 1 sf_add_hello(b) 8 hello 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); sf_add_1(a) - 1 sf_add_hello(b) 8 hello 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 6 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 const PRIMARY PRIMARY 4 const # NULL FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); sf_add_1(a) - 1 sf_add_hello(b) 8 hello 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); sf_add_1(a) - 1 sf_add_hello(b) 8 hello 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 const PRIMARY PRIMARY 4 const # NULL FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; sf_add_1(a) - 1 sf_add_hello(b) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; sf_add_1(a) - 1 sf_add_hello(b) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; sf_add_1(a) - 1 sf_add_hello(b) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; sf_add_1(a) - 1 sf_add_hello(b) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; sf_add_1(a) - 1 sf_add_hello(b) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; sf_add_1(a) - 1 sf_add_hello(b) SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1,p2 index PRIMARY b 258 NULL # Using where; Using index 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 2 hello 2 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 4 HANDLER_WRITE 17 FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; sf_add_1(a) - 1 sf_add_hello(b) 1 hello 1 2 hello 2 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 2 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 4 HANDLER_WRITE 17 UNLOCK TABLES; EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 const PRIMARY PRIMARY 4 const # NULL 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); sf_add_1(a) - 1 sf_add_hello(b) 8 hello 8 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_KEY 7 HANDLER_READ_NEXT 2 HANDLER_WRITE 17 EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 +8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 +8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL PRIMARY 4 NULL # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p1 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL PRIMARY 4 NULL # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 +8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 +8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 +8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 +8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b_d('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1,p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_UPDATE 2 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 +2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_UPDATE 2 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 +1 2 +2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = CONCAT('+', b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_KEY 7 HANDLER_READ_NEXT 2 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 +8 ROLLBACK; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 hello 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 hello 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL PRIMARY 4 NULL # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p1 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL PRIMARY 4 NULL # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 hello 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 hello 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 hello 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 hello 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b_d('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1,p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_UPDATE 2 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 hello 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_UPDATE 2 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 hello 1 2 hello 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET b = sf_add_hello(b) WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_KEY 7 HANDLER_READ_NEXT 2 HANDLER_UPDATE 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 hello 8 ROLLBACK; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1 range PRIMARY PRIMARY 4 const # Using where; Using temporary 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 2 2 6 1 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 2 2 6 1 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where; Using temporary 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 1 1 13 8 2 2 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 1 1 13 8 2 2 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL PRIMARY 4 NULL # Using where; Using temporary FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 6 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 2 2 6 1 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 6 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 2 2 6 1 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p1 range PRIMARY PRIMARY 4 const # Using where; Using temporary FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 11 HANDLER_READ_NEXT 3 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 2 2 6 1 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 11 HANDLER_READ_NEXT 3 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 2 2 6 1 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 index NULL PRIMARY 4 NULL # Using where; Using temporary FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 6 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 1 1 13 8 2 2 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 13 HANDLER_READ_NEXT 6 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 1 1 13 8 2 2 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where; Using temporary FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 11 HANDLER_READ_NEXT 3 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 1 1 13 8 2 2 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 11 HANDLER_READ_NEXT 3 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 1 1 13 8 2 2 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where; Using temporary FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b_d('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1,p2 range PRIMARY PRIMARY 4 const # Using where; Using temporary 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 2 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 7 HANDLER_READ_NEXT 1 HANDLER_READ_RND 2 HANDLER_WRITE 19 SELECT * FROM t2; a b 6 1 7 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 7 HANDLER_READ_NEXT 1 HANDLER_READ_RND 2 HANDLER_WRITE 19 SELECT * FROM t2; a b 6 1 7 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where; Using temporary 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 24 HANDLER_READ_KEY 8 HANDLER_READ_NEXT 2 HANDLER_READ_RND 1 HANDLER_WRITE 18 SELECT * FROM t2; a b 1 1 13 8 2 2 ROLLBACK; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = 7 + (SELECT a FROM t1 WHERE b = '1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 ALL NULL NULL NULL NULL # Using where FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 SELECT * FROM t2; a b 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 SELECT * FROM t2; a b 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p1 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 SELECT * FROM t2; a b 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 SELECT * FROM t2; a b 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1,p2 ALL NULL NULL NULL NULL # Using where FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = 7 + sf_a_from_t1b('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_FIRST 3 HANDLER_READ_KEY 12 HANDLER_READ_NEXT 3 HANDLER_READ_RND_NEXT 6 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = 7 + sf_a_from_t1b_d('1'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 10 HANDLER_READ_NEXT 3 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p2 range PRIMARY PRIMARY 4 const # Using where FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = sf_a_from_t1b('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 4 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL # Impossible WHERE 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_EXTERNAL_LOCK 12 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p1,p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 2 HANDLER_EXTERNAL_LOCK 16 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 8 8 ROLLBACK; FLUSH STATUS; SET autocommit = 0; LOCK TABLES t1 read, t2 write; DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') OR a = 2; SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_DELETE 2 HANDLER_EXTERNAL_LOCK 8 HANDLER_READ_KEY 5 HANDLER_READ_NEXT 1 HANDLER_WRITE 17 SELECT * FROM t2; a b 8 8 ROLLBACK; UNLOCK TABLES; EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); id select_type table partitions type possible_keys key key_len ref rows Extra 1 PRIMARY t2 p2 range PRIMARY PRIMARY 4 const # Using where 2 SUBQUERY t1 p0,p1,p2 ref b b 258 const # Using where; Using index FLUSH STATUS; START TRANSACTION; DELETE FROM t2 WHERE a = (SELECT a FROM t1 WHERE b = '1') AND a = 2 OR a = 8 AND sf_a_from_t1b('2'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 1 HANDLER_DELETE 1 HANDLER_EXTERNAL_LOCK 20 HANDLER_READ_KEY 7 HANDLER_READ_NEXT 2 HANDLER_WRITE 17 SELECT * FROM t2; a b 1 1 2 2 ROLLBACK; set @@autocommit= @old_autocommit; DROP FUNCTION sf_add_hello; DROP FUNCTION sf_add_1; DROP FUNCTION sf_a_from_t1b_d; DROP FUNCTION sf_a_from_t1b; DROP TABLE tq, tsq, t1, t2; SET @@global.innodb_stats_persistent= @old_innodb_stats_persistent;