Files
ServerSync/lib/pygments/lexers/__pycache__/sql.cpython-314.pyc

353 lines
41 KiB
Plaintext
Raw Normal View History

2026-02-12 02:28:23 +02:00
+
<00> <0C>i<04><00><00><><00>Rt^RIt^RIt^RIHtHtHtHtHt^RI H
t
^RI H t ^RI H t ^RI H t ^RI Ht^RI HtHt^R IHtHtHtHtHtHtHtHtHtHtHt.R4Ot]P<!R4t]P<!R4t ]P<!R]PB4t"]P<!R]PB4t#]P<!R4t$]P<!R4t%]P<!R]PB4t&]P<!R]PB4t']P<!R4t(]
PR]
PT,]
PV,t,Rt-!RR4t.!R R ].]4t/!R!R ].]4t0!R"R#].]4t1]P<!R$4t2]P<!R%4t3]P<!R&4t4]P<!R'4t3]P<!R(4t5]P<!R)4t6!R*R+4t7!R,R ]4t8!R-R]4t9!R.R]4t:!R/R]4t;!R0R]4t<!R1R
]4t=!R2R]4t>!R3R]4t?R#)5ax
pygments.lexers.sql
~~~~~~~~~~~~~~~~~~~
Lexers for various SQL dialects and related interactive sessions.
Postgres specific lexers:
`PostgresLexer`
A SQL lexer for the PostgreSQL dialect. Differences w.r.t. the SQL
lexer are:
- keywords and data types list parsed from the PG docs (run the
`_postgres_builtins` module to update them);
- Content of $-strings parsed using a specific lexer, e.g. the content
of a PL/Python function is parsed using the Python lexer;
- parse PG specific constructs: E-strings, $-strings, U&-strings,
different operators and punctuation.
`PlPgsqlLexer`
A lexer for the PL/pgSQL language. Adds a few specific construct on
top of the PG SQL lexer (such as <<label>>).
`PostgresConsoleLexer`
A lexer to highlight an interactive psql session:
- identifies the prompt and does its best to detect the end of command
in multiline statement where not all the lines are prefixed by a
prompt, telling them apart from the output;
- highlights errors in the output and notification levels;
- handles psql backslash commands.
`PostgresExplainLexer`
A lexer to highlight Postgres execution plan.
The ``tests/examplefiles`` contains a few test files with data to be
parsed by these lexers.
:copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
N)<05>Lexer<65>
RegexLexer<EFBFBD> do_insertions<6E>bygroups<70>words)<01>_googlesql_builtins)<01>_mysql_builtins)<01>_postgres_builtins)<01> _sql_builtins)<01>_tsql_builtins)<02>get_lexer_by_name<6D> ClassNotFound) <0B> Punctuation<6F>
Whitespace<EFBFBD>Text<78>Comment<6E>Operator<6F>Keyword<72>Name<6D>String<6E>Number<65>Generic<69>Literal<61>GoogleSqlLexer<65> PostgresLexer<65> PlPgsqlLexer<65>PostgresConsoleLexer<65>PostgresExplainLexer<65>SqlLexer<65>TransactSqlLexer<65>
MySqlLexer<EFBFBD>SqliteConsoleLexer<65>RqlLexerz.*?
z^(?:sqlite| ...)>(?= )z\s+LANGUAGE\s+'?(\w+)'?z\bDO\bz\[[a-zA-Z_]\w*\]z`[a-zA-Z_]\w*`z\bgo\bz \bdeclare\s+@z@[a-zA-Z_]\w*\bc
#<04><>"<00>Rp\PVPVP4VP4^d,4pVe"VP VP ^44pM<>\ \PVP\^VP4^d,
4VP444pV'd)VP VR,P ^44pMq\ \PVP\^VP4^,
4VP444pV'dVP R4pVP^4\VP ^43x<00>VP^4\PVP ^43x<00>VP^4\VP ^43x<00>V'd*VPVP ^44Rjx<01>L
M)VP^4\VP ^43x<00>VP^4\VP ^43x<00>VP^4\PVP ^43x<00>VP^4\VP ^43x<00>R#L<>5i)z<>Parse the content of a $-string using a lexer
The lexer is chosen looking for a nearby LANGUAGE or assumed as
plpgsql if inside a DO statement and no LANGUAGE has been found.
N<EFBFBD>plpgsql<71><6C><EFBFBD><EFBFBD><EFBFBD>)<0E> language_re<72>match<63>text<78>end<6E>
_get_lexer<EFBFBD>group<75>list<73>finditer<65>max<61>start<72>do_rer<00> Delimiter<65>get_tokens_unprocessed)<04>lexerr'<00>lx<6C>ms&& <20>:/tmp/pip-target-qd_sq_1j/lib/python/pygments/lexers/sql.py<70>language_callbackr7Rs<><00><00><00>
<0E>B<EFBFBD><13><19><19>%<25>*<2A>*<2A>U<EFBFBD>Y<EFBFBD>Y<EFBFBD>[<5B><15><19><19><1B>S<EFBFBD><1F>A<>B<>A<EFBFBD><08>}<7D> <12> <1D> <1D>a<EFBFBD>g<EFBFBD>g<EFBFBD>a<EFBFBD>j<EFBFBD> )<29><02> <10><1B>%<25>%<25> <11>J<EFBFBD>J<EFBFBD>s<EFBFBD>1<EFBFBD>e<EFBFBD>k<EFBFBD>k<EFBFBD>m<EFBFBD>C<EFBFBD>/<2F>0<><15><1B><1B><1D> ?<3F>A<01> B<01><01> <0C><16>!<21>!<21>!<21>B<EFBFBD>%<25>+<2B>+<2B>a<EFBFBD>.<2E>1<>B<EFBFBD><14>U<EFBFBD>^<5E>^<5E><15>
<EFBFBD>
<EFBFBD>3<EFBFBD>q<EFBFBD>%<25>+<2B>+<2B>-<2D><02>"2<>3<>E<EFBFBD>K<EFBFBD>K<EFBFBD>M<EFBFBD>B<>D<01>E<01>A<EFBFBD><10><1A>%<25>%<25>i<EFBFBD>0<><02> <11>;<3B>;<3B>q<EFBFBD>><3E>6<EFBFBD>5<EFBFBD>;<3B>;<3B>q<EFBFBD>><3E>
2<EFBFBD>2<> <10>;<3B>;<3B>q<EFBFBD>><3E>6<EFBFBD>+<2B>+<2B>U<EFBFBD>[<5B>[<5B><11>^<5E>
<<3C><<3C> <10>;<3B>;<3B>q<EFBFBD>><3E>6<EFBFBD>5<EFBFBD>;<3B>;<3B>q<EFBFBD>><3E>
2<EFBFBD>2<> <09><15>,<2C>,<2C>U<EFBFBD>[<5B>[<5B><11>^<5E><<3C><<3C><<3C><14>{<7B>{<7B>1<EFBFBD>~<7E>v<EFBFBD>u<EFBFBD>{<7B>{<7B>1<EFBFBD>~<7E>6<>6<> <10>;<3B>;<3B>q<EFBFBD>><3E>6<EFBFBD>5<EFBFBD>;<3B>;<3B>q<EFBFBD>><3E>
2<EFBFBD>2<> <10>;<3B>;<3B>q<EFBFBD>><3E>6<EFBFBD>+<2B>+<2B>U<EFBFBD>[<5B>[<5B><11>^<5E>
<<3C><<3C> <10>;<3B>;<3B>q<EFBFBD>><3E>6<EFBFBD>5<EFBFBD>;<3B>;<3B>q<EFBFBD>><3E>
2<EFBFBD>2<> =<3D>s<00>G2K<01>5#K<01>K<04>B6Kc<00><aa<01>]tRt^vtoRtV3RltRtRtVtV;t #)<05> PostgresBasea<65>Base class for Postgres-related lexers.
This is implemented as a mixin to avoid the Lexer metaclass kicking in.
this way the different lexer don't have a common Lexer ancestor. If they
had, _tokens could be created on this ancestor and not updated for the
other classes, resulting e.g. in PL/pgSQL parsed as SQL. This shortcoming
seem to suggest that regexp lexers are not really subclassable.
c'<08>T<"<00>Wn\SV`!V.VO5!Rjx<01>L
R#L5i<01>N)r(<00>superr2)<04>selfr(<00>args<67> __class__s&&*<2A>r6r2<00>#PostgresBase.get_tokens_unprocesseds#<00><><00><00><18> <09><18>7<EFBFBD>1<>$<24>><3E><14>><3E>><3E>><3E>s <00>(<01>&<04>(c<08><><00>VP4R8Xd\R/VPB#V.pVPR4'dVP VR,4VP R4'dVP VRR4VPR4'd,VP R4'dVP V^R4VFp\V3/VPBu# R# \ dK.i;i)<07>sql<71>pl:<3A>NN<4E>uN)<01>
postgresqlr%)<07>lowerr <00>options<6E>
startswith<EFBFBD>append<6E>endswithr )r=<00>lang<6E>triesr4s&& r6r*<00>PostgresBase._get_lexer<65>s<><00><00> <0F>:<3A>:<3A><<3C>5<EFBFBD> <20>$<24>B<>T<EFBFBD>\<5C>\<5C>B<> B<><15><06><05> <0F>?<3F>?<3F>4<EFBFBD> <20> <20> <11>L<EFBFBD>L<EFBFBD><14>b<EFBFBD><18> "<22> <0F>=<3D>=<3D><13> <1D> <1D> <11>L<EFBFBD>L<EFBFBD><14>c<EFBFBD>r<EFBFBD><19> #<23> <0F>?<3F>?<3F>4<EFBFBD> <20> <20>T<EFBFBD>]<5D>]<5D>3<EFBFBD>%7<>%7<> <11>L<EFBFBD>L<EFBFBD><14>a<EFBFBD><02><1A> $<24><17>B<EFBFBD> <15>(<28><12><<3C>t<EFBFBD>|<7C>|<7C><<3C><<3C><18><18><> !<21> <15><14> <15>s<00>C,<02>, C;<05>:C;)r()
<EFBFBD>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__r2r*<00>__static_attributes__<5F>__classdictcell__<5F> __classcell__)r?<00> __classdict__s@@r6r9r9vs<00><><00><00><08>?<3F>
<18><18>r9c<00>l<00>]tRt^<5E>tRtRtRR.tR.tRtRt ]
Pt RR ] 3R
]P3R ]P R 3R RP#R]P&]P(,44,R,]P,3]!]P0RR7]3R]3R]3R]P63R]P:3R]P<3R]!] PB] P4R3R]!] PB] P*4R3R]"3R]3R]P63R]#3.R R ]P R 3R ]P R!3R"]P 3R#]P 3.RR$] P3R%] P3R&] PR!3.RR'] P*3R(] P*3R)] P*R!3./t$R*t%R+#),rz*
Lexer for the PostgreSQL dialect of SQL.
zPostgreSQL SQL dialectrF<00>postgresztext/x-postgresql<71>https://www.postgresql.org<72>1.5<EFBFBD>root<6F>\s+<2B>--.*\n?<3F>/\*<2A>multiline-comments<74>(<28>|c#<08>F"<00>TFpVPRR4x<00>K R#5i)<03> r^N)<01>replace)<02>.0<EFBFBD>ss& r6<00> <genexpr><3E>PostgresLexer.<genexpr><3E>s)<00><00><00>><3E>'=<3D><11><1F>Y<EFBFBD>Y<EFBFBD>s<EFBFBD>F<EFBFBD>3<>3<>'=<3D>s<00>!z)\b<>\b<><01>suffixz[+*/<>=~!@#%^&|`?-]+z::<3A>\$\d+z&([0-9]*\.[0-9]*|[0-9]+)(e[+-]?[0-9]+)?<3F>[0-9]+z((?:E|U&)?)(')<29>stringz ((?:U&)?)(")z quoted-identz$(?s)(\$)([^$]*)(\$)(.*?)(\$)(\2)(\$)z [a-z_]\w*<2A>:(['"]?)[a-z]\w*\b\1z[;:()\[\]{},.]<5D>\*/<2F>#pop<6F>[^/*]+<2B>[/*]<5D>[^']+<2B>''<27>'<27>[^"]+<2B>""<22>"<22>N)&rOrPrQrRrS<00>name<6D>aliases<65> mimetypes<65>url<72> version_added<65>re<72>
IGNORECASE<EFBFBD>flagsrr<00>Single<6C> Multiline<6E>joinr <00> DATATYPES<45> PSEUDO_TYPESr<00>Builtinr<00>KEYWORDSrr<00>Variabler<00>Float<61>Integerrr<00>Affixr7r<00>tokensrTr|rXr6rr<00>s<><00><00><08> $<24>D<EFBFBD><1B>Z<EFBFBD>(<28>G<EFBFBD>$<24>%<25>I<EFBFBD>
&<26>C<EFBFBD><19>M<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD><0E> <13>Z<EFBFBD> <20> <17><17><1E><1E> (<28> <13>W<EFBFBD>&<26>&<26>(<<3C> =<3D> <11>C<EFBFBD>H<EFBFBD>H<EFBFBD>><3E>&8<>&B<>&B<>/<2F><<3C><<3C>'=<3D>><3E>><3E>><3E>@F<>G<01><12>\<5C>\<5C> <1B><13>%<25>.<2E>.<2E>u<EFBFBD> =<3D>w<EFBFBD> G<> $<24>h<EFBFBD> /<2F> <12>H<EFBFBD> <1D> <15>t<EFBFBD>}<7D>}<7D> %<25> 6<><06> <0C> <0C> E<> <16><06><0E><0E> '<27> <1E><08><16><1C><1C>v<EFBFBD>}<7D>}<7D> E<>x<EFBFBD> P<> <1C>h<EFBFBD>v<EFBFBD>|<7C>|<7C>V<EFBFBD>[<5B>[<5B>A<>><3E> R<> 4<>6G<36> H<> <19>4<EFBFBD> <20>)<29>$<24>-<2D>-<2D> 8<> <1E> <0B> ,<2C>/
<EFBFBD>2 <1D> <13>W<EFBFBD>&<26>&<26>(<<3C> =<3D> <13>W<EFBFBD>&<26>&<26><06> /<2F> <16><07>)<29>)<29> *<2A> <14>g<EFBFBD>'<27>'<27> (<28> 
<EFBFBD> <11> <15>v<EFBFBD>}<7D>}<7D> %<25> <12>F<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> <11>6<EFBFBD>=<3D>=<3D>&<26> )<29>
<EFBFBD>
<17> <15>v<EFBFBD>{<7B>{<7B> #<23> <12>F<EFBFBD>K<EFBFBD>K<EFBFBD> <20> <11>6<EFBFBD>;<3B>;<3B><06> '<27>
<EFBFBD>K*<06>FrXc<00><><00>]tRt^<5E>tRtRtR.tR.tRtRt ]
Pt ] PP4UUu/uFwrWR,bK uppt]!]R,4FHwtt]^,]8XgK]!]P,]P.,R R
7]3]R,]&AM QR 4hR ]P23R ]3R]P63R]P83.]R,R&RtR#uuppi)rz/
Handle the extra syntax in Pl/pgSQL language.
zPL/pgSQLr$ztext/x-plpgsqlz4https://www.postgresql.org/docs/current/plpgsql.htmlr\<00>NNNr]rkrlzSQL keywords not foundz \%[a-z]\w*\bz:=z\<\<[a-z]\w*\>\>z \#[a-z]\w*\b:N<>Nr|N)rOrPrQrRrSr}r~rr<>r<>r<>r<>r<>rr<><00>items<6D> enumerate<74>i<>patternrrr r<><00>PLPGSQL_KEYWORDSrr<>r<00>Label<65>PseudorT<00>r}<00>states00r6rr<00>s<00><00><08> <16>D<EFBFBD><18>k<EFBFBD>G<EFBFBD>!<21>"<22>I<EFBFBD>
@<40>C<EFBFBD><19>M<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD>2?<3F>2F<32>2F<32>2L<32>2L<32>2N<32> O<>2N<32><1D>$<24>d<EFBFBD>!<21>H<EFBFBD>n<EFBFBD>2N<32> O<>F<EFBFBD> <20><06>v<EFBFBD><0E>/<2F>
<EFBFBD><01>7<EFBFBD> <12>1<EFBFBD>:<3A><17> <20><15>(<28>1<>1<>(<28>9<>9<>:<3A>BG<42>I<01><17>!<19>F<EFBFBD>6<EFBFBD>N<EFBFBD>1<EFBFBD> <1D><12> <11>0<> +<2B>*<2A>*<2A>q<EFBFBD>
<19>$<24>,<2C>,<2C>'<27> <0E><08><19> <1C>d<EFBFBD>j<EFBFBD>j<EFBFBD>)<29> <18>'<27>.<2E>.<2E>)<29> <06>F<EFBFBD>6<EFBFBD>N<EFBFBD>2<EFBFBD><16><>Ps<00>C2c<00><><00>]tRt^<5E>tRtRt.t]Pt ]
PP4UUu/uFwrWR,bK uppt ] R,PR]PR34R]R3R]3R]P3R ]P&3R
]P*3R ]P,3R ]P.3.] R&R tR#uuppi)<0F>PsqlRegexLexerz<72>
Extend the PostgresLexer adding support specific for psql commands.
This is not a complete psql lexer yet as it lacks prompt support
and output rendering.
z'PostgreSQL console - regexp based lexerr<72>r]z\\[^\s]+z psql-commandz\nr^rq<00> '(''|[^'])*'z `([^`])*`z[^\s]+r|N)rOrPrQrRrSr}r~r<>r<>r<>rr<>r<>rJrr<>rrrr<>rr<><00>Backtick<63>SymbolrTr<>s00r6r<>r<><00>s<><00><00><08> 5<>D<EFBFBD><10>G<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD>2?<3F>2F<32>2F<32>2L<32>2L<32>2N<32> O<>2N<32><1D>$<24>d<EFBFBD>!<21>H<EFBFBD>n<EFBFBD>2N<32> O<>F<EFBFBD>
<EFBFBD>6<EFBFBD>N<EFBFBD><19><19> <14>g<EFBFBD>n<EFBFBD>n<EFBFBD>n<EFBFBD>5<>7<>
<0F><04>f<EFBFBD><1D> <0F><1A><1C> <14>g<EFBFBD>n<EFBFBD>n<EFBFBD>%<25> $<24>d<EFBFBD>m<EFBFBD>m<EFBFBD>4<> <18>&<26>-<2D>-<2D>(<28> <15>v<EFBFBD><EFBFBD><EFBFBD>'<27> <12>F<EFBFBD>M<EFBFBD>M<EFBFBD>"<22><06>F<EFBFBD>><3E><1A><> Ps<00>Cr<>z^(\S.*?)??[=\-\(\$\'\"][#>]z\s*\\z ;\s*(--.*?)?$z(\s*)(\\.+?)(\s+)$z(ERROR|FATAL):zS((?:DEBUG|INFO|NOTICE|WARNING|ERROR|FATAL|HINT|DETAIL|CONTEXT|LINE [0-9]+):)(.*?\n)c<00>@a<00>]tRtRtoRtRtRtRtRt]t Rt
Vt R#) <09> lookaheadiz0Wrap an iterator and allow pushing back an item.c<08>4<00>\V4VnRVnR#r;)<02>iter<65> _nextitem)r=<00>xs&&r6<00>__init__<5F>lookahead.__init__s<00><00><18><11>G<EFBFBD><04> <09><1D><04>rXc<08><00>V#r;r|)r=s&r6<00>__iter__<5F>lookahead.__iter__"s<00><00><13> rXc<08><00>WnV#r;)r<>)r=r<>s&&r6<00>send<6E>lookahead.send%s <00><00><1A><0E><10>rXc<08>r<00>VPeVPpRVnV#\VP4#r;)r<><00>nextr<74>)r=<00>nis& r6<00>__next__<5F>lookahead.__next__)s/<00><00> <0F>><3E>><3E> %<25><15><1E><1E>B<EFBFBD>!<21>D<EFBFBD>N<EFBFBD><15>I<EFBFBD><13>D<EFBFBD>I<EFBFBD>I<EFBFBD><EFBFBD>rX)r<>r<>N) rOrPrQrRrSr<>r<>r<>r<>r<>rTrU<00>rWs@r6r<>r<>s#<00><><00><00>:<3A><1E><14><11><1F> <14>DrXr<>c<00>Ha<00>]tRtRtoRtRt.R OtR.tRtRt Rt
Rt R t Vt R
#) ri2z
Lexer for psql sessions.
zPostgreSQL console (psql)ztext/x-postgresql-psqlr[r\zpsql/psql_session.txtc#<08>0"<00>\R/VPBp\\P V44pRp.pVEF pVP R4'd9V'g1\ R/VPBpVPV4Rjx<01>L
M<>\PV4pVe`VP\V4^\PVP43.34WF\VP44R, pMWF, p\PV4'g\ P#V4'gEK M \%VVPV44Rjx<01>L
\P&p VEFp\PV4pVeVP)V4EK~\*PV4p
V
e<EFBFBD>V
P^4P R4'g'V
P^4P R4'd\P,p V
P/^4\P0V
P^43x<00>V
P/^4W<>P^43x<00>EK^W<>3x<00>EK
R#ELEL(5i)<08><00><00>$N<>ERROR<4F>FATALr|)<01>console)r<>rHr<><00>line_re<72>findallrIr r2<00> re_promptr'rJ<00>lenr<00>Promptr+<00>re_psql_command<6E>re_end_command<6E>searchr<00>Outputr<74><00>
re_message<EFBFBD>Errorr/<00>Strong) r=<00>datarB<00>lines<65>curcode<64>
insertions<EFBFBD>liner3<00>mprompt<70> out_token<65>mmsgs && r6r2<00>+PostgresConsoleLexer.get_tokens_unprocessed>s<00><00><00><1C>,<2C>t<EFBFBD>|<7C>|<7C>,<2C><03><19>'<27>/<2F>/<2F>$<24>/<2F>0<><05><10><19>G<EFBFBD><1B>J<EFBFBD><1D><04><17>?<3F>?<3F>3<EFBFBD>'<27>'<27><07>-<2D>H<>4<EFBFBD><<3C><<3C>H<>E<EFBFBD>$<24>;<3B>;<3B>D<EFBFBD>A<>A<>A<><19>$<24>/<2F>/<2F>$<24>/<2F><07><1A>&<26><1E>%<25>%<25>s<EFBFBD>7<EFBFBD>|<7C>)*<2A>G<EFBFBD>N<EFBFBD>N<EFBFBD>G<EFBFBD>M<EFBFBD>M<EFBFBD>O<EFBFBD>(L<>'M<>'O<01>P<01><1B>C<EFBFBD><07> <0A> <0A><0F>$8<>$9<>:<3A>:<3A>G<EFBFBD><1B>O<EFBFBD>G<EFBFBD>
#<23>(<28>(<28><17>1<>1<>$<24>+<2B>+<2B>G<EFBFBD>4<>4<><19>+<1E>0%<25>Z<EFBFBD>%(<28>%?<3F>%?<3F><07>%H<>J<01> J<01> J<01> <20><0E><0E>I<EFBFBD><1D><04>#<23>/<2F>/<2F>$<24>/<2F><07><1A>&<26><19>J<EFBFBD>J<EFBFBD>t<EFBFBD>$<24><19>!<21>'<27>'<27><04>-<2D><04><17>#<23><1B>z<EFBFBD>z<EFBFBD>!<21>}<7D>/<2F>/<2F><07>8<>8<><1E>*<2A>*<2A>Q<EFBFBD>-<2D>2<>2<>7<EFBFBD>;<3B>;<3B>$+<2B>M<EFBFBD>M<EFBFBD> <09><1F>:<3A>:<3A>a<EFBFBD>=<3D>'<27>.<2E>.<2E>$<24>*<2A>*<2A>Q<EFBFBD>-<2D>H<>H<><1F>:<3A>:<3A>a<EFBFBD>=<3D>)<29>Z<EFBFBD>Z<EFBFBD><01>]<5D>C<>C<><1C>i<EFBFBD>.<2E>.<2E><1E>"<17>UB<01>( J<01>sE<00>AJ<01> )J<01> J<06>
B J<01>+J<01> "J<01>+J<04>,BJ<01>3%J<01>A8J<01>Jr|N)<03>psqlzpostgresql-consolezpostgres-console)rOrPrQrRrSr}r~rr<>r<><00>_exampler2rTrUr<>s@r6rr2s7<00><><00><00><08> '<27>D<EFBFBD>@<40>G<EFBFBD>)<29>*<2A>I<EFBFBD>
&<26>C<EFBFBD><19>M<EFBFBD>&<26>H<EFBFBD>:<17>:rXc<00>(<00>]tRtRtRtRtR.tR.tR.tRt Rt
R .R
] 3NR ] 3NR ] !]P] 4R 3NR] !]P] ] 4R 3N]!RVRR7]P$3NR] !]P$]43NR]P*3NR] !]P,] 4R3NR] !]P,] ] 4R3NR] !]] ] 4R3N]!RWRR7]P,R3NR]P,R3NR] !]] ]P0] 4R3N]!RXRR7]P,3N]!RYRR7]P23NR] !]P2] ] 43N]!]P6RR7]3NR]P83NR]P,3NR ]P,3NR!]P,3NR"] !]] ]P:43NR#] R3NR$]P$3NR%]P>3NR&]P03NR']P@3NR(]P$3NR)] !]P,] ] 4R*3NR+] !]P,] 43NR,]P*3NR-] !]P,] ]P:] ] 43NR.R/] R03R1] R23R3]P23R4]3.RR5] !]P] 4R 3R6] !]P] ] 4R 3R/] R.3R7] 3R8]P:3R9]P:3R:]P:3R;] R3R<] R3R=]P:3R>]P:3R?]P:3R@]P:3RA]P:3RB] 3RC] 3RD] 3R1] R23.RRE] !] ]P:] 4R23RF]P:R23.R RG] 3RB] 3RH]P3RI]P>3RJ]P03R1] R23.RRK] !]P,]P:43RL]P,R3RM]P,R3.R*RN] !]PB] ]] ]43RO] 3.RR/] 3RP]P:3R1] R23.RRQ] 3RR]PD3RS]P23RJ]P03RB] 3./ t#RTt$RU#)Zri{z"
Handle PostgreSQL EXPLAIN output
zPostgreSQL EXPLAIN dialectzpostgres-explainz *.explainztext/x-postgresql-explainz:https://www.postgresql.org/docs/current/using-explain.htmlz2.15r]z(:|\(|\)|ms|kB|->|\.\.|\,|\/)z(\s+)z
(cost)(=?)<29>instrumentationz(actual)( )(=?)rkrlz.(hit|read|dirtied|written|write|time|calls)(=)z(shared|temp|local)z(Sort Method)(: )<29>sortz1(Sort Key|Group Key|Presorted Key|Hash Key)(:)( )<29> object_namez(Cache Key|Cache Mode)(:)( )<29> predicatez Conflict <20>conflictz(InitPlan|SubPlan)( )(\d+)( )<29> init_planz(I/O Timings)(:)( )z"((Right|Left|Full|Semi|Anti) Join)z%(Parallel |Async |Finalize |Partial )<29>Backwardz(Intersect|Except|Hash)z(CTE)( )(\w*)?z
(on|using)r<>z
-?\d+\.\d+z(-?\d+)z (true|false)z\s*QUERY PLAN\s*\n\s*-+z(Settings)(:)( )<29>settingz!(JIT|Functions|Options|Timing)(:)zG(Inlining|Optimization|Expressions|Deforming|Generation|Emission|Total)z(Trigger)( )(\S*)(:)( )<29>
expressionz\(z#pushz\)rsz(never executed)z[^)(]+z (\(cost)(=?)z(\(actual)( )(=?)z(on)z&\w+(\.\w+)*( USING \S+| \w+ USING \S+)z\"?\w+\"?(?:\.\"?\w+\"?)?z\'\S*\'z,\n<>,z"\*SELECT\*( \d+)?"(.\w+)?z"\*VALUES\*(_\d+)?"(.\w+)?z"ANY_subquery"rnz::\w+z +r{z
\[\.\.\.\]z(\()([^\n]*)(\))z[^\n]*z=|\.\.z(rows|width|time|loops)z\d+\.\d+z(\d+)z(Resolution: )(\w+)z(Arbiter \w+:)z
(Filter: )z ([a-z_]*?)(\s*)(=)(\s*)(\'.*?\')z\, zreturns \$\d+(,\$\d+)?z:|kBz.(quicksort|top-N|heapsort|Average|Memory|Peak)z(external|merge|Disk|sort)r|N)<0E>actualz Memory Usagez
Disk Usage<67>Memory<72>Buckets<74>Batches<65>
originally<EFBFBD>row<6F>rows<77>Hits<74>Misses<65> Evictions<6E> OverflowszPlanned Partitions)<15> Join FilterzSubplans Removed<65>Filterz
Merge Condz Hash Condz
Index Condz Recheck Condz Heap BlockszTID Condz Run ConditionzOrder Byz Function CallzTable Function Callz Inner UniquezParams Evaluatedz Single Copy<70>SamplingzOne-Time Filterr<72><00> Relationsz
Remote SQL)z Sort Methodr<64>z Planning timez Planning TimezExecution timezExecution TimezWorkers PlannedzWorkers Launched<65>Buffers<72>Planning<6E>WorkerzQuery Identifier<65>TimezFull-sort GroupszPre-sorted Groups)zRows Removed by Join FilterzRows Removed by FilterzRows Removed by Index Recheckz Heap Fetchesznever executed)%rOrPrQrRrSr}r~<00> filenamesrr<>r<>rrrr<00>Classrrr<>rrr<><00>Preprocrr<><00> Exceptionr <00>EXPLAIN_KEYWORDS<44>Typer<65>rr<><00>Constant<6E> Attribute<74>Prepocr<63>rTr|rXr6rr{s:<00><00><08> (<28>D<EFBFBD>!<21>"<22>G<EFBFBD><1C> <0A>I<EFBFBD>,<2C>-<2D>I<EFBFBD>
F<EFBFBD>C<EFBFBD><1A>M<EFBFBD> <0F>]
<EFBFBD> -<2D>{<7B> ;<3B>]
<EFBFBD> <15>z<EFBFBD> "<22>]
<EFBFBD> <1B>H<EFBFBD>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><1B>=<3D>?P<> Q<> ]
<EFBFBD> <20><18>$<24>*<2A>*<2A>j<EFBFBD>+<2B>!N<>Pa<50> b<>]
<EFBFBD><13>D<01>LQ<4C>S<01><15>^<5E>^<5E> <1D>]
<EFBFBD>?<3F><08><17><1E><1E>Ya<59>@b<> c<>]
<EFBFBD> $<24>W<EFBFBD>^<5E>^<5E> 4<>!]
<EFBFBD>&"<22>8<EFBFBD>G<EFBFBD>O<EFBFBD>O<EFBFBD>[<5B>#I<>6<EFBFBD> R<>']
<EFBFBD>,B<01> <15>g<EFBFBD>o<EFBFBD>o<EFBFBD>{<7B>J<EFBFBD> ?<3F><1D> P<01>-]
<EFBFBD>0-<2D>h<EFBFBD>w<EFBFBD> <0B>Z<EFBFBD>.X<>Zg<5A> h<>1]
<EFBFBD>6<13>/<2F>
8=<3D> ><3E> <15>_<EFBFBD>_<EFBFBD>k<EFBFBD>  +<2B>7]
<EFBFBD>H<1A>7<EFBFBD>?<3F>?<3F>J<EFBFBD> 7<>I]
<EFBFBD>N.<2E> <15>g<EFBFBD>z<EFBFBD>6<EFBFBD>><3E>><3E>:<3A> F<> <18> <1A>O]
<EFBFBD>V<13>=<3D>FK<01> L<01>NU<01>_<EFBFBD>_<EFBFBD>  ^<01>W]
<EFBFBD>f<13>6<> <20>!<21>#'<27>.<2E>.<2E> 2<>g]
<EFBFBD>n$<24>X<EFBFBD>d<EFBFBD>n<EFBFBD>n<EFBFBD>k<EFBFBD>:<3A>%V<> W<>o]
<EFBFBD>r<13>%<25>6<>6<>u<EFBFBD> E<>w<EFBFBD> O<>s]
<EFBFBD>x3<>G<EFBFBD>L<EFBFBD>L<EFBFBD> A<>y]
<EFBFBD>z6<>w<EFBFBD><EFBFBD><EFBFBD> G<>{]
<EFBFBD>|<19>'<27>/<2F>/<2F> *<2A>}]
<EFBFBD>~(<28><17><1F><1F> 9<>]
<EFBFBD>B<1F><08><17>*<2A>d<EFBFBD>m<EFBFBD>m<EFBFBD> L<> M<>C]
<EFBFBD>J<1B>K<EFBFBD><1D> 7<>K]
<EFBFBD>R<1D>f<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C>S]
<EFBFBD>V<1B>F<EFBFBD>L<EFBFBD>L<EFBFBD> )<29>W]
<EFBFBD>X<18><16><1E><1E> (<28>Y]
<EFBFBD>^<1D>d<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C>_]
<EFBFBD>b(<28><17><1E><1E> 8<>c]
<EFBFBD>f!<21>(<28>7<EFBFBD>?<3F>?<3F>K<EFBFBD><1A>"T<>V_<56> `<60>g]
<EFBFBD>l2<>8<EFBFBD>G<EFBFBD>O<EFBFBD>O<EFBFBD>[<5B>3Y<33> Z<>m]
<EFBFBD>nX<01>Y`<60>Yg<59>Yg<59> h<>o]
<EFBFBD>t(<28> <15>g<EFBFBD>o<EFBFBD>o<EFBFBD>z<EFBFBD>4<EFBFBD>=<3D>=<3D>+<2B>z<EFBFBD> Z<> \<01>u]
<EFBFBD>| <15><13>K<EFBFBD><17> )<29> <12>K<EFBFBD><16> (<28> <20>$<24>.<2E>.<2E> 1<> <16><07> <20> 
<EFBFBD> <16><1D>h<EFBFBD>t<EFBFBD>z<EFBFBD>z<EFBFBD>;<3B>?<3F>AR<41> S<> !<21>8<EFBFBD>D<EFBFBD>J<EFBFBD>J<EFBFBD>
<EFBFBD>K<EFBFBD>#P<>Rc<52> d<><13>K<EFBFBD><1C> .<2E> <14>k<EFBFBD> "<22> 6<><04> <0A> <0A> F<> )<29>4<EFBFBD>=<3D>=<3D> 9<> <17><14><1D><1D> '<27><14>[<5B>-<2D> 0<> <11>;<3B> <0A> .<2E>+<2B>D<EFBFBD>M<EFBFBD>M<EFBFBD> :<3A> *<2A>D<EFBFBD>M<EFBFBD>M<EFBFBD> :<3A> <1E><04> <0A> <0A> .<2E><16>t<EFBFBD>}<7D>}<7D> %<25> <15>t<EFBFBD>}<7D>}<7D> %<25> <12>J<EFBFBD> <1F> <11>;<3B> <1F> <1A>K<EFBFBD> (<28> <12>K<EFBFBD><16> (<28>? 
<EFBFBD>B <14> <20>(<28>;<3B><04> <0A> <0A>{<7B>"S<>U[<5B> \<5C> <16><04> <0A> <0A>v<EFBFBD> .<2E> 
<EFBFBD> <1A> <16> <0B> $<24> <12>J<EFBFBD> <1F> '<27><14><1A><1A> 4<> <18>&<26>,<2C>,<2C> '<27> <15>v<EFBFBD>~<7E>~<7E> &<26> <12>K<EFBFBD><16> (<28> 
<EFBFBD> <13> #<23>X<EFBFBD>g<EFBFBD>o<EFBFBD>o<EFBFBD>t<EFBFBD>}<7D>}<7D>%M<> N<> <1E><07><0F><0F><1D> ?<3F> <1A>G<EFBFBD>O<EFBFBD>O<EFBFBD>[<5B> 9<>
<EFBFBD>
<12> 0<>(<28>4<EFBFBD>><3E>><3E>:<3A>W_<57>ak<61>ms<6D>2t<32> u<> <13>[<5B> !<21>
<EFBFBD> <14> <12>K<EFBFBD> <20> &<26><04> <0A> <0A> 6<> <12>K<EFBFBD><16> (<28>
<EFBFBD>
<0F> <14>k<EFBFBD> "<22> ><3E><07><0E><0E> O<> *<2A>D<EFBFBD>N<EFBFBD>N<EFBFBD> ;<3B> <15>v<EFBFBD>~<7E>~<7E> &<26> <12>J<EFBFBD> <1F> 
<EFBFBD>Ik<06>FrXc <00><>a<00>]tRtRtoRtRtR.tR.tR.tRt Rt
] Pt R R
]3R ]P 3R ]P"R 3]!]P(RR7]3]!]P,RR7]P03R]3R]P63R]P 3R]P:3R]3R]3. R R ]P"R 3R]P"R3R]P"3R]P"3./tRt Rt!Vt"R#)ri5zs
Lexer for Structured Query Language. Currently, this lexer does
not recognize any special syntax except ANSI SQL.
<EFBFBD>SQLrB<00>*.sqlz
text/x-sqlz!https://en.wikipedia.org/wiki/SQLr<4C>r]r^r_r`rarkrlz[+*/<>=~!@#%^&|`?-]ror<><00> "(""|[^"])*"z [a-z_][\w$]*<2A> [;:()\[\],.]rrrsrtruc<08><00>R#r;r|)r=r(s&&r6<00> analyse_text<78>SqlLexer.analyse_textZs<00><00>rXr|N)#rOrPrQrRrSr}r~r<>rr<>r<>r<>r<>r<>rrr<>r<>rr
r<>rr<>rr<>rrr<>rr<>rr<>rrTrUr<>s@r6rr5s(<00><><00><00><08>
<11>D<EFBFBD><14>g<EFBFBD>G<EFBFBD><18> <09>I<EFBFBD><1D><0E>I<EFBFBD>
-<2D>C<EFBFBD><16>M<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD><0E> <13>Z<EFBFBD> <20> <17><17><1E><1E> (<28> <13>W<EFBFBD>&<26>&<26>(<<3C> =<3D> <12>=<3D>)<29>)<29>%<25> 8<>'<27> B<> <12>=<3D>*<2A>*<2A>5<EFBFBD> 9<>4<EFBFBD><<3C><<3C> H<> #<23>X<EFBFBD> .<2E> <16><06><0E><0E> '<27> <1C>f<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C> <1C>f<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C> <1C>d<EFBFBD> #<23> <1C>k<EFBFBD> *<2A> 
<EFBFBD> <1D> <13>W<EFBFBD>&<26>&<26>(<<3C> =<3D> <13>W<EFBFBD>&<26>&<26><06> /<2F> <16><07>)<29>)<29> *<2A> <14>g<EFBFBD>'<27>'<27> (<28> 
<EFBFBD><06>F<EFBFBD>.<0F>rXc<00><>a<00>]tRtRtoRtRtRR.tR.tR.tRt R t
] Pt R
R ]3R ]P 3R ]P"R3]!]P(4]3]!]P,RR7]P.3]!]P0RR7]P43]!]P6RR7]P83R]!]]]P>43]!]P@RR7]3R]!]]]43R]!PD3R]!PF3R]!PF3R]!PF3R]!PH3R]%P 3R]%PL3R]'3R]PP3R]PR3R]!]P>]'43R]3R]PRPT3.RR ]P"R3R ]P"R!3R"]P"3R#]P"3./t+R$t,R%t-Vt.R&#)'ri^z<>
Transact-SQL (T-SQL) is Microsoft's and Sybase's proprietary extension to
SQL.
The list of keywords includes ODBC and keywords reserved for future use.
z Transact-SQL<51>tsqlzt-sqlr<6C>z text/x-tsqlzhttps://www.tsql.infor<6F>r]r^z --.*[$|\n]?r`rarkrlz(goto)(\s+)(\w+\b)z(\[)([^]]+)(\])<29> 0x[0-9a-f]+<2B>[0-9]+\.[0-9]*(e[+-]?[0-9]+)?z\.[0-9]+(e[+-]?[0-9]+)?<3F>[0-9]+e[+-]?[0-9]+ror<>r<>z[;(),.]z@@\w+z@\w+z(\w+)(:)z#?#?\w+<2B>\?rrrsrtruc<08><><00>^p\PV4'dRpV#\\P V44p\\
P V44pW#,pV^8<>dV^V,8<>d VR, pM W28<32>d VR, pMV^8<>d
VR, p\ PV4e
VR, p\PV4e
VR, pV#)r<>g<00>?<3F><00>?皙<><E79A99><EFBFBD><EFBFBD><EFBFBD>?皙<><E79A99><EFBFBD><EFBFBD><EFBFBD>?)<08>tsql_declare_rer<65>r<><00>name_between_backtick_rer<65><00>name_between_bracket_re<72>tsql_variable_re<72>
tsql_go_re<EFBFBD>r(<00>rating<6E>name_between_backtick_count<6E>name_between_bracket_count<6E>dialect_name_counts& r6r<00>TransactSqlLexer.analyse_text<78>s<><00><00><12><06> <1A> !<21> !<21>$<24> '<27> '<27><18>F<EFBFBD>,<16> <0A>)+.<2E>(<28>0<>0<><14>6<>+8<> '<27>),<2C>'<27>/<2F>/<2F><04>5<>*7<> &<26>
"=<3D>!Y<> <1E>!<21>Q<EFBFBD>&<26>)<29>Q<EFBFBD>1L<31>-L<>L<><16>#<23> <0A><06>+<2B>I<><16>#<23> <0A><06>+<2B>a<EFBFBD>/<2F><16>#<23> <0A><06><1F>&<26>&<26>t<EFBFBD>,<2C>8<><16>#<23> <0A><06><19> <20> <20><14>&<26>2<><16>#<23> <0A><06><15> rXr|N)/rOrPrQrRrSr}r~r<>rr<>r<>r<>r<>r<>rrr<>r<>rr <00> OPERATORSr<00>OPERATOR_WORDS<44>Word<72>TYPESrr<><00> FUNCTIONS<4E>Functionrrr<>r<>r<00>Hexr<78>r<>rr<>rr<>r<><00>Magicr<63>rrTrUr<>s@r6rr^s<00><><00><00><08> <1A>D<EFBFBD><15>w<EFBFBD><1F>G<EFBFBD><18> <09>I<EFBFBD><1E><0F>I<EFBFBD>
!<21>C<EFBFBD><16>M<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD> <0F> <13>Z<EFBFBD> <20> <1B>W<EFBFBD>^<5E>^<5E> ,<2C> <13>W<EFBFBD>&<26>&<26>(<<3C> =<3D> <12>><3E>+<2B>+<2B> ,<2C>h<EFBFBD> 7<> <12>><3E>0<>0<><15> ?<3F><18><1D><1D> O<> <12>><3E>'<27>'<27><05> 6<><04>
<EFBFBD>
<EFBFBD> C<> <12>><3E>+<2B>+<2B>E<EFBFBD> :<3A>D<EFBFBD>M<EFBFBD>M<EFBFBD> J<> "<22>H<EFBFBD>W<EFBFBD>j<EFBFBD>$<24>*<2A>*<2A>$M<> N<> <12>><3E>*<2A>*<2A>5<EFBFBD> 9<>7<EFBFBD> C<> <1F><18>(<28>D<EFBFBD>(<28>!C<> D<> <1B>V<EFBFBD>Z<EFBFBD>Z<EFBFBD> (<28> -<2D>v<EFBFBD>|<7C>|<7C> <<3C> '<27><16><1C><1C> 6<> "<22>F<EFBFBD>L<EFBFBD>L<EFBFBD> 1<> <16><06><0E><0E> '<27> <1C>f<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C> <1C>f<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C> <17><1B> %<25><16>t<EFBFBD>|<7C>|<7C> $<24> <14>d<EFBFBD>m<EFBFBD>m<EFBFBD> $<24> <18>(<28>4<EFBFBD>:<3A>:<3A>{<7B>;<3B> <<3C> <17><14> <1E> <12>D<EFBFBD>M<EFBFBD>M<EFBFBD>'<27>'<27> (<28>;
<EFBFBD>> <1D> <13>W<EFBFBD>&<26>&<26>(<<3C> =<3D> <13>W<EFBFBD>&<26>&<26><06> /<2F> <16><07>)<29>)<29> *<2A> <14>g<EFBFBD>'<27>'<27> (<28> 
<EFBFBD>A&<06>F<EFBFBD>P<16>rXc<00>za<00>]tRtRtoRtRtR.tR.tRtRt ]
Pt R.R ] 3NR
]P3NR ]P R 3NR ]P"R3NR]P&3NR]P&3NR]P(3NR]P(3NR]P*3NR]P*3NR]P*3NR]P,3NR]P03NR]P03NR]P03NR]PR3NR]P4R3NR]P83NR]P83NR ]P8R!3NR"]P8R#3NR$]P8R%3NR&]P83NR']3NR(]3NR)]!]] ]43N] !]!PDR*R*R+7]PF3N] !]!PHR*R*R+7]PJ3N] !]!PLR*R*R+7]3N] !]!PNR*R,R+7]!]PP] ])43NR-]3NR.]PTR/3NR0])3NR R1]P 3R2]P R33] !]!PVR*R47]PX3R5]P 3R6]P 3.RR7]P"3R2]P"R33R6]P"3.RR8]P3R9]PZ3R:]PZ3R]PR33.RR;]P43R<]PZ3R:]PZ3R]P4R33.R!R=]P83R9]P83R]P8R33.R#R>]P83R<]P83R]P8R33.R%R?]P83R@]P83R.]P8R33.R/R?]PT3R@]PTPZ3R.]PTR33./ t.RAt/RBt0Vt1RC#)Dr i<>a!The Oracle MySQL lexer.
This lexer does not attempt to maintain strict compatibility with
MariaDB syntax or keywords. Although MySQL and MariaDB's common code
history suggests there may be significant overlap between the two,
compatibility between the two is not a target for this lexer.
<EFBFBD>MySQL<51>mysqlz text/x-mysqlzhttps://www.mysql.comr<6D>r]r^<00> (?:#|--\s+).*z/\*\+zoptimizer-hintsr`<00>multiline-comment<6E>x'([0-9a-f]{2})+'r<00>b'[01]+'<27>0b[01]+r<00>[0-9]*\.[0-9]+(e[+-]?[0-9]+)?r<00>"[0-9]+(?=[^0-9a-z$_\u0080-\uffff])<29>I\{\s*d\s*(?P<quote>['\"])\s*\d{2}(\d{2})?.?\d{2}.?\d{2}\s*(?P=quote)\s*\}<7D>Z\{\s*t\s*(?P<quote>['\"])\s*(?:\d+\s+)?\d{1,2}.?\d{1,2}.?\d{1,2}(\.\d*)?\s*(?P=quote)\s*\}<7D>p\{\s*ts\s*(?P<quote>['\"])\s*\d{2}(?:\d{2})?.?\d{2}.?\d{2}\s+\d{1,2}.?\d{1,2}.?\d{1,2}(\.\d*)?\s*(?P=quote)\s*\}rx<00>single-quoted-stringr{<00>double-quoted-string<6E>9@@(?:global\.|persist\.|persist_only\.|session\.)?[a-z_]+<2B> @[a-z0-9_$.]+<2B>@'<27>single-quoted-variable<6C>@"<22>double-quoted-variable<6C>@`<60>backtick-quoted-variabler z[!%&*+/:<=>^|~-]+<2B>\b(set)(?!\s*\()<29>\b(character)(\s+)(set)\brk<00><02>prefixrm<00> \b(\s*)(\()<29>[0-9a-z$_€-￿]+<2B>`<60>schema-object-name<6D>[(),.;]z[^*a-z]+rrrsrlz[a-z]+<2B>\*<2A>[^*]+<2B>[^'\\]+rw<00>\\[0'"bnrtZ\\%_]<5D>[^"\\]+rzrvry<00>[^`]+<2B>``c<08><00>^p\\PV44p\\PV44pW#,pV^8<>dV^V,8<>d VR, pV#W#8<>d VR, pV#V^8<>d
VR, pV#)r<>r r r )r<>rr<>rrs& r6r<00>MySqlLexer.analyse_text^s<><00><00><12><06>&)<29> $<24> ,<2C> ,<2C>T<EFBFBD> 2<>'4<>#<23>%(<28> #<23> +<2B> +<2B>D<EFBFBD> 1<>&3<>"<22>9<>U<><1A> <1D><11> "<22> &<26>!<21>.H<>*H<> H<> <12>c<EFBFBD>M<EFBFBD>F<EFBFBD>
<16> <0A> )<29> E<> <12>c<EFBFBD>M<EFBFBD>F<EFBFBD><16> <0A>)<29>1<EFBFBD> ,<2C> <12>c<EFBFBD>M<EFBFBD>F<EFBFBD><15> rXr|N)2rOrPrQrRrSr}r~rr<>r<>r<>r<>r<>rrr<><00>Specialr<6C>rr<00>Binr<6E>r<>r<00>Dater<00>Doublerr<>rrrrr<00>MYSQL_CONSTANTSr<53><00>MYSQL_DATATYPESr<53><00>MYSQL_KEYWORDS<44>MYSQL_FUNCTIONSrr<00>Quoted<65>MYSQL_OPTIMIZER_HINTSr<53><00>Escaper<65>rrTrUr<>s@r6r r <00>s:<00><><00><00><08> <13>D<EFBFBD><16>i<EFBFBD>G<EFBFBD><1F> <20>I<EFBFBD>
!<21>C<EFBFBD><16>M<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD><0E>P
<EFBFBD> <13>Z<EFBFBD> <20>P
<EFBFBD><1E>w<EFBFBD>~<7E>~<7E> .<2E> P
<EFBFBD>
<16>w<EFBFBD><EFBFBD><EFBFBD>(9<> :<3A> P
<EFBFBD> <14>W<EFBFBD>&<26>&<26>(;<3B> <<3C> P
<EFBFBD>"<22>6<EFBFBD>:<3A>:<3A> .<2E>P
<EFBFBD><1C>V<EFBFBD>Z<EFBFBD>Z<EFBFBD> (<28>P
<EFBFBD><19>&<26>*<2A>*<2A> %<25>P
<EFBFBD><18><16><1A><1A> $<24>P
<EFBFBD>".<2E>v<EFBFBD>|<7C>|<7C> <<3C>#P
<EFBFBD>$.<2E>v<EFBFBD>|<7C>|<7C> <<3C>%P
<EFBFBD>&#<23>F<EFBFBD>L<EFBFBD>L<EFBFBD> 1<>'P
<EFBFBD>(3<>F<EFBFBD>N<EFBFBD>N<EFBFBD> C<>)P
<EFBFBD>.Z<01> <14>\<5C>\<5C> <1B>/P
<EFBFBD>6k<01> <14>\<5C>\<5C> <1B>7P
<EFBFBD>@&<26>
<18> <0C> <0C>  <0E>?P
<EFBFBD>R<12>6<EFBFBD>=<3D>=<3D>"8<> 9<>SP
<EFBFBD>T<12>6<EFBFBD>=<3D>=<3D>"8<> 9<>UP
<EFBFBD>ZJ<01>4<EFBFBD>=<3D>=<3D> Y<>[P
<EFBFBD>\<1E>t<EFBFBD>}<7D>}<7D> -<2D>]P
<EFBFBD>^<13>D<EFBFBD>M<EFBFBD>M<EFBFBD>#;<3B> <<3C>_P
<EFBFBD>`<13>D<EFBFBD>M<EFBFBD>M<EFBFBD>#;<3B> <<3C>aP
<EFBFBD>b<13>D<EFBFBD>M<EFBFBD>M<EFBFBD>#=<3D> ><3E>cP
<EFBFBD>d<13>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22>eP
<EFBFBD>j"<22>8<EFBFBD> ,<2C>kP
<EFBFBD>p!<21>'<27> *<2A>qP
<EFBFBD>r*<2A>8<EFBFBD>G<EFBFBD>Z<EFBFBD><17>+Q<> R<>sP
<EFBFBD>x<13>?<3F>2<>2<>5<EFBFBD><15> O<> <11>]<5D>]<5D> <1C>yP
<EFBFBD>|<13>?<3F>2<>2<>5<EFBFBD><15> O<> <14>\<5C>\<5C> <1B>}P
<EFBFBD>@<13>?<3F>1<>1<>%<25><05> N<> <14> <16>AP
<EFBFBD>D<13>?<3F>2<>2<>5<EFBFBD><1E> X<> <15>d<EFBFBD>m<EFBFBD>m<EFBFBD>Z<EFBFBD><1B> =<3D> ?<3F>EP
<EFBFBD>V(<28><14> .<2E>WP
<EFBFBD>X<12>4<EFBFBD>;<3B>;<3B> 4<> 5<>YP
<EFBFBD>^<18><1B> %<25>_P
<EFBFBD>j <1A> <18>'<27>/<2F>/<2F> *<2A> <13>W<EFBFBD>_<EFBFBD>_<EFBFBD>f<EFBFBD> -<2D> <12>?<3F>8<>8<><15> G<> <14>_<EFBFBD>_<EFBFBD> <1E> <15>w<EFBFBD><EFBFBD><EFBFBD> '<27> <12>G<EFBFBD>O<EFBFBD>O<EFBFBD> $<24> 
<EFBFBD> <1C> <15>w<EFBFBD>(<28>(<28> )<29> <13>W<EFBFBD>&<26>&<26><06> /<2F> <12>G<EFBFBD>%<25>%<25> &<26>
<EFBFBD> <1F> <17><16><1D><1D> '<27> <12>F<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> $<24>f<EFBFBD>m<EFBFBD>m<EFBFBD> 4<> <11>6<EFBFBD>=<3D>=<3D>&<26> )<29> !
<EFBFBD> <1F> <17><16><1D><1D> '<27> <12>F<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> $<24>f<EFBFBD>m<EFBFBD>m<EFBFBD> 4<> <11>6<EFBFBD>=<3D>=<3D>&<26> )<29> !
<EFBFBD> !<21> <15>t<EFBFBD>}<7D>}<7D> %<25> <12>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> <11>4<EFBFBD>=<3D>=<3D>&<26> )<29>#
<EFBFBD> !<21> <15>t<EFBFBD>}<7D>}<7D> %<25> <12>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> <11>4<EFBFBD>=<3D>=<3D>&<26> )<29>#
<EFBFBD> #<23> <15>t<EFBFBD>}<7D>}<7D> %<25> <12>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> <11>4<EFBFBD>=<3D>=<3D>&<26> )<29>%
<EFBFBD> <1D> <15>t<EFBFBD>{<7B>{<7B> #<23> <12>D<EFBFBD>K<EFBFBD>K<EFBFBD>&<26>&<26> '<27> <11>4<EFBFBD>;<3B>;<3B><06> '<27>
<EFBFBD>gX<06>F<EFBFBD>t<16>rXc<00><>a<00>]tRtRtoRtRtRR.tRR.tRR .tR
t R t
] Pt R .R ]3NR]P 3NR]P"R3NR]P&3NR]P&3NR]P(3NR]P(3NR]P*3NR]P*3NR]P*3NR]P,3NR]P03NR]P03NR]P03NR]P R3NR]P4R3NR ]P83NR!]P83NR"]P8R#3NR$]P8R%3NR&]P8R'3NR(]P83NR)]3NR*]!]]]43N]!] PBR+R+R,7]PD3N]!] PFR+R+R,7]PH3N]!] PJR+R+R,7]3N]!] PLR+R-R,7]!]PN]](43N]!] PRR+R+R,7]*3NR.]3NR/]PVR03NR1](3NRR2]P"3R3]P"R43R5]P"3.RR6]P 3R7]PX3R8]PX3R]P R43.RR9]P43R:]PX3R8]PX3R]P4R43.R#R;]P83R7]P83R]P8R43.R%R<]P83R:]P83R]P8R43.R'R=]P83R>]P83R/]P8R43.R0R=]PV3R>]PVPX3R/]PVR43./t-R?t.R@t/Vt0RA#)Briqz<>
GoogleSQL is Google's standard SQL dialect, formerly known as ZetaSQL.
The list of keywords includes reserved words for future use.
<EFBFBD> GoogleSQL<51> googlesql<71>zetasqlz *.googlesqlz*.googlesql.sqlztext/x-google-sqlztext/x-google-sql-auxz+https://cloud.google.com/bigquery/googlesqlz2.19r]r^r$r`r%r&rr'r(rr)rr*r+r,r-rxr.r{r/r0r1r2r3r4r5r6r7r r8r9rkr:r<r=r>r?r@rBrrrsrArCrwrDrErzrvryrFrGc<08><><00>\P!VP44pR\RVP 444,#)g<><67><EFBFBD><EFBFBD>MbP?c3<00>D"<00>TFwrV\9gKVx<00>K R#5ir;)<01>googlesql_identifiers)rg<00>t<>counts& r6ri<00>.GoogleSqlLexer.analyse_text.<locals>.<genexpr> s"<00><00><00>:<3A><1E>X<EFBFBD>Q<EFBFBD><1F>#8<>8<>!<21>5<EFBFBD><1E>s<00> <01>
)<05> collections<6E>Counter<65>split<69>sumr<6D>)r(r<>s& r6r<00>GoogleSqlLexer.analyse_text s><00><00><1C>$<24>$<24>T<EFBFBD>Z<EFBFBD>Z<EFBFBD>\<5C>2<><06><14>s<EFBFBD>:<3A><16><1C><1C><1E>:<3A>:<3A>:<3A> :rXr|N)1rOrPrQrRrSr}r~r<>rr<>r<>r<>r<>r<>rrr<>r<>rrrKr<>r<>rrLrrMrr<>rrrr<00> constantsr<73><00>typesr<73><00>keywords<64> functionnamesrr<00> operatorsrrRrTr<>rrTrUr<>s@r6rrqs<><00><><00><00><08> <17>D<EFBFBD><1A>I<EFBFBD>&<26>G<EFBFBD><1E> 1<>2<>I<EFBFBD>$<24>&=<3D>><3E>I<EFBFBD>
7<EFBFBD>C<EFBFBD><1A>M<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD><0E>J
<EFBFBD> <13>Z<EFBFBD> <20>J
<EFBFBD><1E>w<EFBFBD>~<7E>~<7E> .<2E> J
<EFBFBD>
<14>W<EFBFBD>&<26>&<26>(;<3B> <<3C> J
<EFBFBD>"<22>6<EFBFBD>:<3A>:<3A> .<2E>J
<EFBFBD><1C>V<EFBFBD>Z<EFBFBD>Z<EFBFBD> (<28>J
<EFBFBD><19>&<26>*<2A>*<2A> %<25>J
<EFBFBD><18><16><1A><1A> $<24>J
<EFBFBD> .<2E>v<EFBFBD>|<7C>|<7C> <<3C>!J
<EFBFBD>".<2E>v<EFBFBD>|<7C>|<7C> <<3C>#J
<EFBFBD>$#<23>F<EFBFBD>L<EFBFBD>L<EFBFBD> 1<>%J
<EFBFBD>&3<>F<EFBFBD>N<EFBFBD>N<EFBFBD> C<>'J
<EFBFBD>,Z<01> <14>\<5C>\<5C> <1B>-J
<EFBFBD>4k<01> <14>\<5C>\<5C> <1B>5J
<EFBFBD>>&<26>
<18> <0C> <0C>  <0E>=J
<EFBFBD>P<12>6<EFBFBD>=<3D>=<3D>"8<> 9<>QJ
<EFBFBD>R<12>6<EFBFBD>=<3D>=<3D>"8<> 9<>SJ
<EFBFBD>XJ<01>4<EFBFBD>=<3D>=<3D> Y<>YJ
<EFBFBD>Z<1E>t<EFBFBD>}<7D>}<7D> -<2D>[J
<EFBFBD>\<13>D<EFBFBD>M<EFBFBD>M<EFBFBD>#;<3B> <<3C>]J
<EFBFBD>^<13>D<EFBFBD>M<EFBFBD>M<EFBFBD>#;<3B> <<3C>_J
<EFBFBD>`<13>D<EFBFBD>M<EFBFBD>M<EFBFBD>#=<3D> ><3E>aJ
<EFBFBD>b<13>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22>cJ
<EFBFBD>h!<21>'<27> *<2A>iJ
<EFBFBD>j*<2A>8<EFBFBD>G<EFBFBD>Z<EFBFBD><17>+Q<> R<>kJ
<EFBFBD>p<13>&<26>0<>0<><15>u<EFBFBD> M<>t<EFBFBD>}<7D>}<7D> ]<5D>qJ
<EFBFBD>r<13>&<26>,<2C>,<2C>U<EFBFBD>5<EFBFBD> I<>7<EFBFBD><<3C><<3C> X<>sJ
<EFBFBD>t<13>&<26>/<2F>/<2F><05>e<EFBFBD> L<>g<EFBFBD> V<>uJ
<EFBFBD>v<13>&<26>4<>4<>U<EFBFBD>><3E> Z<> <15>d<EFBFBD>m<EFBFBD>m<EFBFBD>Z<EFBFBD><1B> =<3D> ?<3F>wJ
<EFBFBD>z<13>&<26>0<>0<><15>u<EFBFBD> M<>x<EFBFBD> X<>{J
<EFBFBD>J(<28><14> .<2E>KJ
<EFBFBD>L<12>4<EFBFBD>;<3B>;<3B> 4<> 5<>MJ
<EFBFBD>R<18><1B> %<25>SJ
<EFBFBD>^ <1C> <15>w<EFBFBD>(<28>(<28> )<29> <13>W<EFBFBD>&<26>&<26><06> /<2F> <12>G<EFBFBD>%<25>%<25> &<26>
<EFBFBD> <1F> <17><16><1D><1D> '<27> <12>F<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> $<24>f<EFBFBD>m<EFBFBD>m<EFBFBD> 4<> <11>6<EFBFBD>=<3D>=<3D>&<26> )<29> !
<EFBFBD> <1F> <17><16><1D><1D> '<27> <12>F<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> $<24>f<EFBFBD>m<EFBFBD>m<EFBFBD> 4<> <11>6<EFBFBD>=<3D>=<3D>&<26> )<29> !
<EFBFBD> !<21> <15>t<EFBFBD>}<7D>}<7D> %<25> <12>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> <11>4<EFBFBD>=<3D>=<3D>&<26> )<29>#
<EFBFBD> !<21> <15>t<EFBFBD>}<7D>}<7D> %<25> <12>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> <11>4<EFBFBD>=<3D>=<3D>&<26> )<29>#
<EFBFBD> #<23> <15>t<EFBFBD>}<7D>}<7D> %<25> <12>D<EFBFBD>M<EFBFBD>M<EFBFBD> "<22> <11>4<EFBFBD>=<3D>=<3D>&<26> )<29>%
<EFBFBD> <1D> <15>t<EFBFBD>{<7B>{<7B> #<23> <12>D<EFBFBD>K<EFBFBD>K<EFBFBD>&<26>&<26> '<27> <11>4<EFBFBD>;<3B>;<3B><06> '<27>
<EFBFBD>II<06>F<EFBFBD>V:<3A>:rXc<00>La<00>]tRtRtoRtRtR.tR.tR.tRt Rt
R t R
t R t VtR #) r!iz+
Lexer for example sessions using sqlite3.
<EFBFBD>
sqlite3con<EFBFBD>sqlite3z*.sqlite3-consoleztext/x-sqlite3-consolezhttps://www.sqlite.orgz0.11zsqlite3/sqlite3.sqlite3-consolec#<08>""<00>\R/VPBpRp.p\PV4EF&pVP 4p\
P V4pVekVP\V4^\PVR,3.34VP\V4^\R3.34W6R,, pK<>V'd(\VVPV44Rjx<01>L
Rp.pVPR4'd'VP4\P V3x<00>EKVP4\P"V3x<00>EK) V'd&\VVPV44Rjx<01>L
R#R#L<>L
5i)r<>N:N<>Nre:<3A>NNz SQL error: r|)rrHr<>r-r+<00>sqlite_prompt_rer'rJr<>rr<>rrr2rIr/<00> Tracebackr<6B>)r=r<>rBr<>r<>r'r<><00> prompt_matchs&& r6r2<00>)SqliteConsoleLexer.get_tokens_unprocessedsd<00><00><00><16>&<26><14><1C><1C>&<26><03><14><07><17>
<EFBFBD><1C>%<25>%<25>d<EFBFBD>+<2B>E<EFBFBD><18>;<3B>;<3B>=<3D>D<EFBFBD>+<2B>1<>1<>$<24>7<>L<EFBFBD><1B>'<27><1A>!<21>!<21>3<EFBFBD>w<EFBFBD><<3C>%&<26><07><0E><0E><04>R<EFBFBD><08>$A<>#B<>#D<01>E<01><1A>!<21>!<21>3<EFBFBD>w<EFBFBD><<3C>%&<26>
<EFBFBD>C<EFBFBD>$8<>#9<>#;<3B><<3C><17><02>8<EFBFBD>#<23><07><1A>,<2C>Z<EFBFBD>-0<>-G<>-G<><07>-P<> R<01>R<01>R<01> <20>G<EFBFBD>!#<23>J<EFBFBD><17>?<3F>?<3F>=<3D>1<>1<> <20>;<3B>;<3B>=<3D>'<27>*;<3B>*;<3B>T<EFBFBD>B<>B<> <20>;<3B>;<3B>=<3D>'<27>.<2E>.<2E>$<24>?<3F>?<3F>%,<2C>& <13>$<24>Z<EFBFBD>%(<28>%?<3F>%?<3F><07>%H<>J<01> J<01> J<01> <13>R<01> J<01>s7<00>C F<01>F<01>.F <06>/F<01>AF<01>$F<01>F <04> F<01> Fr|N)rOrPrQrRrSr}r~r<>rr<>r<>r<>r2rTrUr<>s@r6r!r!sC<00><><00><00><08> <18>D<EFBFBD><18>k<EFBFBD>G<EFBFBD>$<24>%<25>I<EFBFBD>)<29>*<2A>I<EFBFBD>
"<22>C<EFBFBD><1A>M<EFBFBD>0<>H<EFBFBD>J<01>JrXc <00><><00>]tRtRtRtRtRtR.tR.tR.t Rt
] Pt R R
]3R ]3R ]3R ]P$3R]P(3R]3R]P,3R]P,3R]3. /tRtR#)r"i;z$
Lexer for Relation Query Language.
<EFBFBD>RQLz"http://www.logilab.org/project/rql<71>rqlz*.rqlz
text/x-rqlz2.0r]r^z<>(DELETE|SET|INSERT|UNION|DISTINCT|WITH|WHERE|BEING|OR|AND|NOT|GROUPBY|HAVING|ORDERBY|ASC|DESC|LIMIT|OFFSET|TODAY|NOW|TRUE|FALSE|NULL|EXISTS)\bz
[+*/<>=%-]z)(Any|is|instance_of|CWEType|CWRelation)\broz [A-Z_]\w*\??r<>r<>rr|N)rOrPrQrRrSr}r<>r~r<>rr<>r<>r<>r<>rrrrr<>rr<>rr<>rr<>rTr|rXr6r"r";s<><00><00><08> <11>D<EFBFBD>
.<2E>C<EFBFBD><14>g<EFBFBD>G<EFBFBD><18> <09>I<EFBFBD><1D><0E>I<EFBFBD><19>M<EFBFBD> <0E>M<EFBFBD>M<EFBFBD>E<EFBFBD><0E> <13>Z<EFBFBD> <20>5<>6=<3D> ?<3F><1B>H<EFBFBD> %<25> 9<>4<EFBFBD><<3C><<3C> H<> <16><06><0E><0E> '<27> <1C>d<EFBFBD> #<23> <1C>f<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C> <1C>f<EFBFBD>m<EFBFBD>m<EFBFBD> ,<2C> <1C>k<EFBFBD> *<2A> 
<EFBFBD><06>FrX)
rrrrrrrr r!r")@rSr_r<><00>pygments.lexerrrrrr<00>pygments.lexersrrr r
r r r <00>pygments.tokenrrrrrrrrrrr<00>__all__<5F>compiler<65>ror<>r&r0rrrrrrgrfrer[r7r9rrr<>r<>r<>r<><00>re_errorr<72>r<>rrrrr rr!r"r|rXr6<00><module>r|s0<00><01>(<04>T<13> <09>L<>L<>/<2F>+<2B>.<2E>)<29>*<2A><<3C>4<>4<>4<>4<> O<01><07> <0E>:<3A>:<3A>g<EFBFBD> <1E><07><15>:<3A>:<3A>9<>:<3A><10><10>j<EFBFBD>j<EFBFBD>3<>R<EFBFBD>]<5D>]<5D>C<> <0B>
<EFBFBD>
<EFBFBD>
<EFBFBD>9<EFBFBD>b<EFBFBD>m<EFBFBD>m<EFBFBD>,<2C><05><1D>*<2A>*<2A>%8<>9<><17><1D>:<3A>:<3A>&7<>8<><18> <0F>Z<EFBFBD>Z<EFBFBD> <09>2<EFBFBD>=<3D>=<3D> 1<>
<EFBFBD><14>*<2A>*<2A>-<2D>r<EFBFBD>}<7D>}<7D>=<3D><0F><15>:<3A>:<3A>0<>1<><10><18>%<25>%<25><19>"<22>"<22>#<23><19><1F><1F> <20><16> !3<>H"<18>"<18>J6<06>L<EFBFBD>*<2A>6<06>r <06><<3C><1A> <06>F<06>\<5C>:<3A><06>6 <0F>J<EFBFBD>J<EFBFBD>5<> 6<> <09><14>*<2A>*<2A>X<EFBFBD>&<26><0F><13><1A><1A>,<2C>-<2D><0E><14>*<2A>*<2A>2<>3<><0F> <0A>:<3A>:<3A>'<27> (<28><08> <0F>Z<EFBFBD>Z<EFBFBD>7<>8<>
<EFBFBD>
<14><14>,F<17>5<EFBFBD>F<17>Rw<06>:<3A>w<06>t&<0F>z<EFBFBD>&<0F>RS<16>z<EFBFBD>S<16>lz<16><1A>z<16>z]:<3A>Z<EFBFBD>]:<3A>@'J<01><15>'J<01>T<06>z<EFBFBD>rX