PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib/rads/venv/lib/python3.13/site-packages/pygments/lexers
Viewing File: /usr/lib/rads/venv/lib/python3.13/site-packages/pygments/lexers/_mysql_builtins.py
""" pygments.lexers._mysql_builtins ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Self-updating data files for the MySQL lexer. Run with `python -I` to update. :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ MYSQL_CONSTANTS = ( 'false', 'null', 'true', 'unknown', ) # At this time, no easily-parsed, definitive list of data types # has been found in the MySQL source code or documentation. (The # `sql/sql_yacc.yy` file is definitive but is difficult to parse.) # Therefore these types are currently maintained manually. # # Some words in this list -- like "long", "national", "precision", # and "varying" -- appear to only occur in combination with other # data type keywords. Therefore they are included as separate words # even though they do not naturally occur in syntax separately. # # This list is also used to strip data types out of the list of # MySQL keywords, which is automatically updated later in the file. # MYSQL_DATATYPES = ( # Numeric data types 'bigint', 'bit', 'bool', 'boolean', 'dec', 'decimal', 'double', 'fixed', 'float', 'float4', 'float8', 'int', 'int1', 'int2', 'int3', 'int4', 'int8', 'integer', 'mediumint', 'middleint', 'numeric', 'precision', 'real', 'serial', 'smallint', 'tinyint', # Date and time data types 'date', 'datetime', 'time', 'timestamp', 'year', # String data types 'binary', 'blob', 'char', 'enum', 'long', 'longblob', 'longtext', 'mediumblob', 'mediumtext', 'national', 'nchar', 'nvarchar', 'set', 'text', 'tinyblob', 'tinytext', 'varbinary', 'varchar', 'varcharacter', 'varying', # Spatial data types 'geometry', 'geometrycollection', 'linestring', 'multilinestring', 'multipoint', 'multipolygon', 'point', 'polygon', # JSON data types 'json', ) # Everything below this line is auto-generated from the MySQL source code. # Run this file in Python and it will update itself. # ----------------------------------------------------------------------------- MYSQL_FUNCTIONS = ( 'abs', 'acos', 'adddate', 'addtime', 'aes_decrypt', 'aes_encrypt', 'any_value', 'asin', 'atan', 'atan2', 'benchmark', 'bin', 'bin_to_uuid', 'bit_and', 'bit_count', 'bit_length', 'bit_or', 'bit_xor', 'can_access_column', 'can_access_database', 'can_access_event', 'can_access_resource_group', 'can_access_routine', 'can_access_table', 'can_access_trigger', 'can_access_user', 'can_access_view', 'cast', 'ceil', 'ceiling', 'char_length', 'character_length', 'coercibility', 'compress', 'concat', 'concat_ws', 'connection_id', 'conv', 'convert_cpu_id_mask', 'convert_interval_to_user_interval', 'convert_tz', 'cos', 'cot', 'count', 'crc32', 'curdate', 'current_role', 'curtime', 'date_add', 'date_format', 'date_sub', 'datediff', 'dayname', 'dayofmonth', 'dayofweek', 'dayofyear', 'degrees', 'elt', 'exp', 'export_set', 'extract', 'extractvalue', 'field', 'find_in_set', 'floor', 'format_bytes', 'format_pico_time', 'found_rows', 'from_base64', 'from_days', 'from_unixtime', 'get_dd_column_privileges', 'get_dd_create_options', 'get_dd_index_private_data', 'get_dd_index_sub_part_length', 'get_dd_property_key_value', 'get_dd_schema_options', 'get_dd_tablespace_private_data', 'get_lock', 'greatest', 'group_concat', 'gtid_subset', 'gtid_subtract', 'hex', 'icu_version', 'ifnull', 'inet6_aton', 'inet6_ntoa', 'inet_aton', 'inet_ntoa', 'instr', 'internal_auto_increment', 'internal_avg_row_length', 'internal_check_time', 'internal_checksum', 'internal_data_free', 'internal_data_length', 'internal_dd_char_length', 'internal_get_comment_or_error', 'internal_get_dd_column_extra', 'internal_get_enabled_role_json', 'internal_get_hostname', 'internal_get_mandatory_roles_json', 'internal_get_partition_nodegroup', 'internal_get_username', 'internal_get_view_warning_or_error', 'internal_index_column_cardinality', 'internal_index_length', 'internal_is_enabled_role', 'internal_is_mandatory_role', 'internal_keys_disabled', 'internal_max_data_length', 'internal_table_rows', 'internal_tablespace_autoextend_size', 'internal_tablespace_data_free', 'internal_tablespace_extent_size', 'internal_tablespace_extra', 'internal_tablespace_free_extents', 'internal_tablespace_id', 'internal_tablespace_initial_size', 'internal_tablespace_logfile_group_name', 'internal_tablespace_logfile_group_number', 'internal_tablespace_maximum_size', 'internal_tablespace_row_format', 'internal_tablespace_status', 'internal_tablespace_total_extents', 'internal_tablespace_type', 'internal_tablespace_version', 'internal_update_time', 'is_free_lock', 'is_ipv4', 'is_ipv4_compat', 'is_ipv4_mapped', 'is_ipv6', 'is_used_lock', 'is_uuid', 'is_visible_dd_object', 'isnull', 'json_array', 'json_array_append', 'json_array_insert', 'json_arrayagg', 'json_contains', 'json_contains_path', 'json_depth', 'json_extract', 'json_insert', 'json_keys', 'json_length', 'json_merge', 'json_merge_patch', 'json_merge_preserve', 'json_object', 'json_objectagg', 'json_overlaps', 'json_pretty', 'json_quote', 'json_remove', 'json_replace', 'json_schema_valid', 'json_schema_validation_report', 'json_search', 'json_set', 'json_storage_free', 'json_storage_size', 'json_type', 'json_unquote', 'json_valid', 'last_day', 'last_insert_id', 'lcase', 'least', 'length', 'like_range_max', 'like_range_min', 'ln', 'load_file', 'locate', 'log', 'log10', 'log2', 'lower', 'lpad', 'ltrim', 'make_set', 'makedate', 'maketime', 'master_pos_wait', 'max', 'mbrcontains', 'mbrcoveredby', 'mbrcovers', 'mbrdisjoint', 'mbrequals', 'mbrintersects', 'mbroverlaps', 'mbrtouches', 'mbrwithin', 'md5', 'mid', 'min', 'monthname', 'name_const', 'now', 'nullif', 'oct', 'octet_length', 'ord', 'period_add', 'period_diff', 'pi', 'position', 'pow', 'power', 'ps_current_thread_id', 'ps_thread_id', 'quote', 'radians', 'rand', 'random_bytes', 'regexp_instr', 'regexp_like', 'regexp_replace', 'regexp_substr', 'release_all_locks', 'release_lock', 'remove_dd_property_key', 'reverse', 'roles_graphml', 'round', 'rpad', 'rtrim', 'sec_to_time', 'session_user', 'sha', 'sha1', 'sha2', 'sign', 'sin', 'sleep', 'soundex', 'source_pos_wait', 'space', 'sqrt', 'st_area', 'st_asbinary', 'st_asgeojson', 'st_astext', 'st_aswkb', 'st_aswkt', 'st_buffer', 'st_buffer_strategy', 'st_centroid', 'st_collect', 'st_contains', 'st_convexhull', 'st_crosses', 'st_difference', 'st_dimension', 'st_disjoint', 'st_distance', 'st_distance_sphere', 'st_endpoint', 'st_envelope', 'st_equals', 'st_exteriorring', 'st_frechetdistance', 'st_geohash', 'st_geomcollfromtext', 'st_geomcollfromtxt', 'st_geomcollfromwkb', 'st_geometrycollectionfromtext', 'st_geometrycollectionfromwkb', 'st_geometryfromtext', 'st_geometryfromwkb', 'st_geometryn', 'st_geometrytype', 'st_geomfromgeojson', 'st_geomfromtext', 'st_geomfromwkb', 'st_hausdorffdistance', 'st_interiorringn', 'st_intersection', 'st_intersects', 'st_isclosed', 'st_isempty', 'st_issimple', 'st_isvalid', 'st_latfromgeohash', 'st_latitude', 'st_length', 'st_linefromtext', 'st_linefromwkb', 'st_lineinterpolatepoint', 'st_lineinterpolatepoints', 'st_linestringfromtext', 'st_linestringfromwkb', 'st_longfromgeohash', 'st_longitude', 'st_makeenvelope', 'st_mlinefromtext', 'st_mlinefromwkb', 'st_mpointfromtext', 'st_mpointfromwkb', 'st_mpolyfromtext', 'st_mpolyfromwkb', 'st_multilinestringfromtext', 'st_multilinestringfromwkb', 'st_multipointfromtext', 'st_multipointfromwkb', 'st_multipolygonfromtext', 'st_multipolygonfromwkb', 'st_numgeometries', 'st_numinteriorring', 'st_numinteriorrings', 'st_numpoints', 'st_overlaps', 'st_pointatdistance', 'st_pointfromgeohash', 'st_pointfromtext', 'st_pointfromwkb', 'st_pointn', 'st_polyfromtext', 'st_polyfromwkb', 'st_polygonfromtext', 'st_polygonfromwkb', 'st_simplify', 'st_srid', 'st_startpoint', 'st_swapxy', 'st_symdifference', 'st_touches', 'st_transform', 'st_union', 'st_validate', 'st_within', 'st_x', 'st_y', 'statement_digest', 'statement_digest_text', 'std', 'stddev', 'stddev_pop', 'stddev_samp', 'str_to_date', 'strcmp', 'subdate', 'substr', 'substring', 'substring_index', 'subtime', 'sum', 'sysdate', 'system_user', 'tan', 'time_format', 'time_to_sec', 'timediff', 'to_base64', 'to_days', 'to_seconds', 'trim', 'ucase', 'uncompress', 'uncompressed_length', 'unhex', 'unix_timestamp', 'updatexml', 'upper', 'uuid', 'uuid_short', 'uuid_to_bin', 'validate_password_strength', 'var_pop', 'var_samp', 'variance', 'version', 'wait_for_executed_gtid_set', 'wait_until_sql_thread_after_gtids', 'weekday', 'weekofyear', 'yearweek', ) MYSQL_OPTIMIZER_HINTS = ( 'bka', 'bnl', 'derived_condition_pushdown', 'dupsweedout', 'firstmatch', 'group_index', 'hash_join', 'index', 'index_merge', 'intoexists', 'join_fixed_order', 'join_index', 'join_order', 'join_prefix', 'join_suffix', 'loosescan', 'materialization', 'max_execution_time', 'merge', 'mrr', 'no_bka', 'no_bnl', 'no_derived_condition_pushdown', 'no_group_index', 'no_hash_join', 'no_icp', 'no_index', 'no_index_merge', 'no_join_index', 'no_merge', 'no_mrr', 'no_order_index', 'no_range_optimization', 'no_semijoin', 'no_skip_scan', 'order_index', 'qb_name', 'resource_group', 'semijoin', 'set_var', 'skip_scan', 'subquery', ) MYSQL_KEYWORDS = ( 'accessible', 'account', 'action', 'active', 'add', 'admin', 'after', 'against', 'aggregate', 'algorithm', 'all', 'alter', 'always', 'analyze', 'and', 'any', 'array', 'as', 'asc', 'ascii', 'asensitive', 'assign_gtids_to_anonymous_transactions', 'at', 'attribute', 'authentication', 'auto_increment', 'autoextend_size', 'avg', 'avg_row_length', 'backup', 'before', 'begin', 'between', 'binlog', 'block', 'both', 'btree', 'buckets', 'by', 'byte', 'cache', 'call', 'cascade', 'cascaded', 'case', 'catalog_name', 'chain', 'challenge_response', 'change', 'changed', 'channel', 'character', 'charset', 'check', 'checksum', 'cipher', 'class_origin', 'client', 'clone', 'close', 'coalesce', 'code', 'collate', 'collation', 'column', 'column_format', 'column_name', 'columns', 'comment', 'commit', 'committed', 'compact', 'completion', 'component', 'compressed', 'compression', 'concurrent', 'condition', 'connection', 'consistent', 'constraint', 'constraint_catalog', 'constraint_name', 'constraint_schema', 'contains', 'context', 'continue', 'convert', 'cpu', 'create', 'cross', 'cube', 'cume_dist', 'current', 'current_date', 'current_time', 'current_timestamp', 'current_user', 'cursor', 'cursor_name', 'data', 'database', 'databases', 'datafile', 'day', 'day_hour', 'day_microsecond', 'day_minute', 'day_second', 'deallocate', 'declare', 'default', 'default_auth', 'definer', 'definition', 'delay_key_write', 'delayed', 'delete', 'dense_rank', 'desc', 'describe', 'description', 'deterministic', 'diagnostics', 'directory', 'disable', 'discard', 'disk', 'distinct', 'distinctrow', 'div', 'do', 'drop', 'dual', 'dumpfile', 'duplicate', 'dynamic', 'each', 'else', 'elseif', 'empty', 'enable', 'enclosed', 'encryption', 'end', 'ends', 'enforced', 'engine', 'engine_attribute', 'engines', 'error', 'errors', 'escape', 'escaped', 'event', 'events', 'every', 'except', 'exchange', 'exclude', 'execute', 'exists', 'exit', 'expansion', 'expire', 'explain', 'export', 'extended', 'extent_size', 'factor', 'failed_login_attempts', 'false', 'fast', 'faults', 'fetch', 'fields', 'file', 'file_block_size', 'filter', 'finish', 'first', 'first_value', 'flush', 'following', 'follows', 'for', 'force', 'foreign', 'format', 'found', 'from', 'full', 'fulltext', 'function', 'general', 'generated', 'geomcollection', 'get', 'get_format', 'get_master_public_key', 'get_source_public_key', 'global', 'grant', 'grants', 'group', 'group_replication', 'grouping', 'groups', 'gtid_only', 'handler', 'hash', 'having', 'help', 'high_priority', 'histogram', 'history', 'host', 'hosts', 'hour', 'hour_microsecond', 'hour_minute', 'hour_second', 'identified', 'if', 'ignore', 'ignore_server_ids', 'import', 'in', 'inactive', 'index', 'indexes', 'infile', 'initial', 'initial_size', 'initiate', 'inner', 'inout', 'insensitive', 'insert', 'insert_method', 'install', 'instance', 'interval', 'into', 'invisible', 'invoker', 'io', 'io_after_gtids', 'io_before_gtids', 'io_thread', 'ipc', 'is', 'isolation', 'issuer', 'iterate', 'join', 'json_table', 'json_value', 'key', 'key_block_size', 'keyring', 'keys', 'kill', 'lag', 'language', 'last', 'last_value', 'lateral', 'lead', 'leading', 'leave', 'leaves', 'left', 'less', 'level', 'like', 'limit', 'linear', 'lines', 'list', 'load', 'local', 'localtime', 'localtimestamp', 'lock', 'locked', 'locks', 'logfile', 'logs', 'loop', 'low_priority', 'master', 'master_auto_position', 'master_bind', 'master_compression_algorithms', 'master_connect_retry', 'master_delay', 'master_heartbeat_period', 'master_host', 'master_log_file', 'master_log_pos', 'master_password', 'master_port', 'master_public_key_path', 'master_retry_count', 'master_ssl', 'master_ssl_ca', 'master_ssl_capath', 'master_ssl_cert', 'master_ssl_cipher', 'master_ssl_crl', 'master_ssl_crlpath', 'master_ssl_key', 'master_ssl_verify_server_cert', 'master_tls_ciphersuites', 'master_tls_version', 'master_user', 'master_zstd_compression_level', 'match', 'max_connections_per_hour', 'max_queries_per_hour', 'max_rows', 'max_size', 'max_updates_per_hour', 'max_user_connections', 'maxvalue', 'medium', 'member', 'memory', 'merge', 'message_text', 'microsecond', 'migrate', 'min_rows', 'minute', 'minute_microsecond', 'minute_second', 'mod', 'mode', 'modifies', 'modify', 'month', 'mutex', 'mysql_errno', 'name', 'names', 'natural', 'ndb', 'ndbcluster', 'nested', 'network_namespace', 'never', 'new', 'next', 'no', 'no_wait', 'no_write_to_binlog', 'nodegroup', 'none', 'not', 'nowait', 'nth_value', 'ntile', 'null', 'nulls', 'number', 'of', 'off', 'offset', 'oj', 'old', 'on', 'one', 'only', 'open', 'optimize', 'optimizer_costs', 'option', 'optional', 'optionally', 'options', 'or', 'order', 'ordinality', 'organization', 'others', 'out', 'outer', 'outfile', 'over', 'owner', 'pack_keys', 'page', 'parser', 'partial', 'partition', 'partitioning', 'partitions', 'password', 'password_lock_time', 'path', 'percent_rank', 'persist', 'persist_only', 'phase', 'plugin', 'plugin_dir', 'plugins', 'port', 'precedes', 'preceding', 'prepare', 'preserve', 'prev', 'primary', 'privilege_checks_user', 'privileges', 'procedure', 'process', 'processlist', 'profile', 'profiles', 'proxy', 'purge', 'quarter', 'query', 'quick', 'random', 'range', 'rank', 'read', 'read_only', 'read_write', 'reads', 'rebuild', 'recover', 'recursive', 'redo_buffer_size', 'redundant', 'reference', 'references', 'regexp', 'registration', 'relay', 'relay_log_file', 'relay_log_pos', 'relay_thread', 'relaylog', 'release', 'reload', 'remove', 'rename', 'reorganize', 'repair', 'repeat', 'repeatable', 'replace', 'replica', 'replicas', 'replicate_do_db', 'replicate_do_table', 'replicate_ignore_db', 'replicate_ignore_table', 'replicate_rewrite_db', 'replicate_wild_do_table', 'replicate_wild_ignore_table', 'replication', 'require', 'require_row_format', 'require_table_primary_key_check', 'reset', 'resignal', 'resource', 'respect', 'restart', 'restore', 'restrict', 'resume', 'retain', 'return', 'returned_sqlstate', 'returning', 'returns', 'reuse', 'reverse', 'revoke', 'right', 'rlike', 'role', 'rollback', 'rollup', 'rotate', 'routine', 'row', 'row_count', 'row_format', 'row_number', 'rows', 'rtree', 'savepoint', 'schedule', 'schema', 'schema_name', 'schemas', 'second', 'second_microsecond', 'secondary', 'secondary_engine', 'secondary_engine_attribute', 'secondary_load', 'secondary_unload', 'security', 'select', 'sensitive', 'separator', 'serializable', 'server', 'session', 'share', 'show', 'shutdown', 'signal', 'signed', 'simple', 'skip', 'slave', 'slow', 'snapshot', 'socket', 'some', 'soname', 'sounds', 'source', 'source_auto_position', 'source_bind', 'source_compression_algorithms', 'source_connect_retry', 'source_connection_auto_failover', 'source_delay', 'source_heartbeat_period', 'source_host', 'source_log_file', 'source_log_pos', 'source_password', 'source_port', 'source_public_key_path', 'source_retry_count', 'source_ssl', 'source_ssl_ca', 'source_ssl_capath', 'source_ssl_cert', 'source_ssl_cipher', 'source_ssl_crl', 'source_ssl_crlpath', 'source_ssl_key', 'source_ssl_verify_server_cert', 'source_tls_ciphersuites', 'source_tls_version', 'source_user', 'source_zstd_compression_level', 'spatial', 'specific', 'sql', 'sql_after_gtids', 'sql_after_mts_gaps', 'sql_before_gtids', 'sql_big_result', 'sql_buffer_result', 'sql_calc_found_rows', 'sql_no_cache', 'sql_small_result', 'sql_thread', 'sql_tsi_day', 'sql_tsi_hour', 'sql_tsi_minute', 'sql_tsi_month', 'sql_tsi_quarter', 'sql_tsi_second', 'sql_tsi_week', 'sql_tsi_year', 'sqlexception', 'sqlstate', 'sqlwarning', 'srid', 'ssl', 'stacked', 'start', 'starting', 'starts', 'stats_auto_recalc', 'stats_persistent', 'stats_sample_pages', 'status', 'stop', 'storage', 'stored', 'straight_join', 'stream', 'string', 'subclass_origin', 'subject', 'subpartition', 'subpartitions', 'super', 'suspend', 'swaps', 'switches', 'system', 'table', 'table_checksum', 'table_name', 'tables', 'tablespace', 'temporary', 'temptable', 'terminated', 'than', 'then', 'thread_priority', 'ties', 'timestampadd', 'timestampdiff', 'tls', 'to', 'trailing', 'transaction', 'trigger', 'triggers', 'true', 'truncate', 'type', 'types', 'unbounded', 'uncommitted', 'undefined', 'undo', 'undo_buffer_size', 'undofile', 'unicode', 'uninstall', 'union', 'unique', 'unknown', 'unlock', 'unregister', 'unsigned', 'until', 'update', 'upgrade', 'usage', 'use', 'use_frm', 'user', 'user_resources', 'using', 'utc_date', 'utc_time', 'utc_timestamp', 'validation', 'value', 'values', 'variables', 'vcpu', 'view', 'virtual', 'visible', 'wait', 'warnings', 'week', 'weight_string', 'when', 'where', 'while', 'window', 'with', 'without', 'work', 'wrapper', 'write', 'x509', 'xa', 'xid', 'xml', 'xor', 'year_month', 'zerofill', 'zone', ) if __name__ == '__main__': # pragma: no cover import re from urllib.request import urlopen from pygments.util import format_lines # MySQL source code SOURCE_URL = 'https://github.com/mysql/mysql-server/raw/8.0' LEX_URL = SOURCE_URL + '/sql/lex.h' ITEM_CREATE_URL = SOURCE_URL + '/sql/item_create.cc' def update_myself(): # Pull content from lex.h. lex_file = urlopen(LEX_URL).read().decode('utf8', errors='ignore') keywords = parse_lex_keywords(lex_file) functions = parse_lex_functions(lex_file) optimizer_hints = parse_lex_optimizer_hints(lex_file) # Parse content in item_create.cc. item_create_file = urlopen(ITEM_CREATE_URL).read().decode('utf8', errors='ignore') functions.update(parse_item_create_functions(item_create_file)) # Remove data types from the set of keywords. keywords -= set(MYSQL_DATATYPES) update_content('MYSQL_FUNCTIONS', tuple(sorted(functions))) update_content('MYSQL_KEYWORDS', tuple(sorted(keywords))) update_content('MYSQL_OPTIMIZER_HINTS', tuple(sorted(optimizer_hints))) def parse_lex_keywords(f): """Parse keywords in lex.h.""" results = set() for m in re.finditer(r'{SYM(?:_HK)?\("(?P<keyword>[a-z0-9_]+)",', f, flags=re.I): results.add(m.group('keyword').lower()) if not results: raise ValueError('No keywords found') return results def parse_lex_optimizer_hints(f): """Parse optimizer hints in lex.h.""" results = set() for m in re.finditer(r'{SYM_H\("(?P<keyword>[a-z0-9_]+)",', f, flags=re.I): results.add(m.group('keyword').lower()) if not results: raise ValueError('No optimizer hints found') return results def parse_lex_functions(f): """Parse MySQL function names from lex.h.""" results = set() for m in re.finditer(r'{SYM_FN?\("(?P<function>[a-z0-9_]+)",', f, flags=re.I): results.add(m.group('function').lower()) if not results: raise ValueError('No lex functions found') return results def parse_item_create_functions(f): """Parse MySQL function names from item_create.cc.""" results = set() for m in re.finditer(r'{"(?P<function>[^"]+?)",\s*SQL_F[^(]+?\(', f, flags=re.I): results.add(m.group('function').lower()) if not results: raise ValueError('No item_create functions found') return results def update_content(field_name, content): """Overwrite this file with content parsed from MySQL's source code.""" with open(__file__, encoding="utf-8") as f: data = f.read() # Line to start/end inserting re_match = re.compile(rf'^{field_name}\s*=\s*\($.*?^\s*\)$', re.M | re.S) m = re_match.search(data) if not m: raise ValueError(f'Could not find an existing definition for {field_name}') new_block = format_lines(field_name, content) data = data[:m.start()] + new_block + data[m.end():] with open(__file__, 'w', encoding='utf-8', newline='\n') as f: f.write(data) update_myself()