1
0
Fork 0
sqlglot/docs/sqlglot/dialects/clickhouse.html
Daniel Baumann de6539b796
Merging upstream version 26.15.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-04-21 09:50:04 +02:00

7076 lines
No EOL
1.6 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="pdoc 15.0.1"/>
<title>sqlglot.dialects.clickhouse API documentation</title>
<style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style>
<style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pdoc-code .cp{color:#9C6500}.pdoc-code .cpf{color:#3D7B7B; font-style:italic}.pdoc-code .c1{color:#3D7B7B; font-style:italic}.pdoc-code .cs{color:#3D7B7B; font-style:italic}.pdoc-code .gd{color:#A00000}.pdoc-code .ge{font-style:italic}.pdoc-code .gr{color:#E40000}.pdoc-code .gh{color:#000080; font-weight:bold}.pdoc-code .gi{color:#008400}.pdoc-code .go{color:#717171}.pdoc-code .gp{color:#000080; font-weight:bold}.pdoc-code .gs{font-weight:bold}.pdoc-code .gu{color:#800080; font-weight:bold}.pdoc-code .gt{color:#0044DD}.pdoc-code .kc{color:#008000; font-weight:bold}.pdoc-code .kd{color:#008000; font-weight:bold}.pdoc-code .kn{color:#008000; font-weight:bold}.pdoc-code .kp{color:#008000}.pdoc-code .kr{color:#008000; font-weight:bold}.pdoc-code .kt{color:#B00040}.pdoc-code .m{color:#666666}.pdoc-code .s{color:#BA2121}.pdoc-code .na{color:#687822}.pdoc-code .nb{color:#008000}.pdoc-code .nc{color:#0000FF; font-weight:bold}.pdoc-code .no{color:#880000}.pdoc-code .nd{color:#AA22FF}.pdoc-code .ni{color:#717171; font-weight:bold}.pdoc-code .ne{color:#CB3F38; font-weight:bold}.pdoc-code .nf{color:#0000FF}.pdoc-code .nl{color:#767600}.pdoc-code .nn{color:#0000FF; font-weight:bold}.pdoc-code .nt{color:#008000; font-weight:bold}.pdoc-code .nv{color:#19177C}.pdoc-code .ow{color:#AA22FF; font-weight:bold}.pdoc-code .w{color:#bbbbbb}.pdoc-code .mb{color:#666666}.pdoc-code .mf{color:#666666}.pdoc-code .mh{color:#666666}.pdoc-code .mi{color:#666666}.pdoc-code .mo{color:#666666}.pdoc-code .sa{color:#BA2121}.pdoc-code .sb{color:#BA2121}.pdoc-code .sc{color:#BA2121}.pdoc-code .dl{color:#BA2121}.pdoc-code .sd{color:#BA2121; font-style:italic}.pdoc-code .s2{color:#BA2121}.pdoc-code .se{color:#AA5D1F; font-weight:bold}.pdoc-code .sh{color:#BA2121}.pdoc-code .si{color:#A45A77; font-weight:bold}.pdoc-code .sx{color:#008000}.pdoc-code .sr{color:#A45A77}.pdoc-code .s1{color:#BA2121}.pdoc-code .ss{color:#19177C}.pdoc-code .bp{color:#008000}.pdoc-code .fm{color:#0000FF}.pdoc-code .vc{color:#19177C}.pdoc-code .vg{color:#19177C}.pdoc-code .vi{color:#19177C}.pdoc-code .vm{color:#19177C}.pdoc-code .il{color:#666666}</style>
<style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style>
<style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;z-index:999;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem;}.git-button{display:none !important;}nav input[type="search"]{max-width:77%;}nav input[type="search"]:first-child{margin-top:-6px;}nav input[type="search"]:valid ~ *{display:none !important;}}@media (min-width:770px){:root{--sidebar-width:clamp(12.5rem, 28vw, 22rem);}nav{position:fixed;overflow:auto;height:100vh;width:var(--sidebar-width);}main, header{padding:3rem 2rem 3rem calc(var(--sidebar-width) + 3rem);width:calc(54rem + var(--sidebar-width));max-width:100%;}header + main{margin-top:-4rem;}#navtoggle{display:none;}}#togglestate{position:absolute;height:0;opacity:0;}nav.pdoc{--pad:clamp(0.5rem, 2vw, 1.75rem);--indent:1.5rem;background-color:var(--accent);border-right:1px solid var(--accent2);box-shadow:0 0 20px rgba(50, 50, 50, .2) inset;padding:0 0 0 var(--pad);overflow-wrap:anywhere;scrollbar-width:thin; scrollbar-color:var(--accent2) transparent; z-index:1}nav.pdoc::-webkit-scrollbar{width:.4rem; }nav.pdoc::-webkit-scrollbar-thumb{background-color:var(--accent2); }nav.pdoc > div{padding:var(--pad) 0;}nav.pdoc .module-list-button{display:inline-flex;align-items:center;color:var(--text);border-color:var(--muted);margin-bottom:1rem;}nav.pdoc .module-list-button:hover{border-color:var(--text);}nav.pdoc input[type=search]{display:block;outline-offset:0;width:calc(100% - var(--pad));}nav.pdoc .logo{max-width:calc(100% - var(--pad));max-height:35vh;display:block;margin:0 auto 1rem;transform:translate(calc(-.5 * var(--pad)), 0);}nav.pdoc ul{list-style:none;padding-left:0;}nav.pdoc > div > ul{margin-left:calc(0px - var(--pad));}nav.pdoc li a{padding:.2rem 0 .2rem calc(var(--pad) + var(--indent));}nav.pdoc > div > ul > li > a{padding-left:var(--pad);}nav.pdoc li{transition:all 100ms;}nav.pdoc li:hover{background-color:var(--nav-hover);}nav.pdoc a, nav.pdoc a:hover{color:var(--text);}nav.pdoc a{display:block;}nav.pdoc > h2:first-of-type{margin-top:1.5rem;}nav.pdoc .class:before{content:"class ";color:var(--muted);}nav.pdoc .function:after{content:"()";color:var(--muted);}nav.pdoc footer:before{content:"";display:block;width:calc(100% - var(--pad));border-top:solid var(--accent2) 1px;margin-top:1.5rem;padding-top:.5rem;}nav.pdoc footer{font-size:small;}</style>
<style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{cursor:pointer;display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:.75rem center;margin-bottom:1rem;}.pdoc .alert > em{display:none;}.pdoc .alert > *:last-child{margin-bottom:0;}.pdoc .alert.note {color:#084298;background-color:#cfe2ff;border-color:#b6d4fe;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23084298%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm.93-9.412-1%204.705c-.07.34.029.533.304.533.194%200%20.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703%200-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381%202.29-.287zM8%205.5a1%201%200%201%201%200-2%201%201%200%200%201%200%202z%22/%3E%3C/svg%3E");}.pdoc .alert.warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23664d03%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8.982%201.566a1.13%201.13%200%200%200-1.96%200L.165%2013.233c-.457.778.091%201.767.98%201.767h13.713c.889%200%201.438-.99.98-1.767L8.982%201.566zM8%205c.535%200%20.954.462.9.995l-.35%203.507a.552.552%200%200%201-1.1%200L7.1%205.995A.905.905%200%200%201%208%205zm.002%206a1%201%200%201%201%200%202%201%201%200%200%201%200-2z%22/%3E%3C/svg%3E");}.pdoc .alert.danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23842029%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5.52.359A.5.5%200%200%201%206%200h4a.5.5%200%200%201%20.474.658L8.694%206H12.5a.5.5%200%200%201%20.395.807l-7%209a.5.5%200%200%201-.873-.454L6.823%209.5H3.5a.5.5%200%200%201-.48-.641l2.5-8.5z%22/%3E%3C/svg%3E");}.pdoc .visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important;}.pdoc h1, .pdoc h2, .pdoc h3{font-weight:300;margin:.3em 0;padding:.2em 0;}.pdoc > section:not(.module-info) h1{font-size:1.5rem;font-weight:500;}.pdoc > section:not(.module-info) h2{font-size:1.4rem;font-weight:500;}.pdoc > section:not(.module-info) h3{font-size:1.3rem;font-weight:500;}.pdoc > section:not(.module-info) h4{font-size:1.2rem;}.pdoc > section:not(.module-info) h5{font-size:1.1rem;}.pdoc a{text-decoration:none;color:var(--link);}.pdoc a:hover{color:var(--link-hover);}.pdoc blockquote{margin-left:2rem;}.pdoc pre{border-top:1px solid var(--accent2);border-bottom:1px solid var(--accent2);margin-top:0;margin-bottom:1em;padding:.5rem 0 .5rem .5rem;overflow-x:auto;background-color:var(--code);}.pdoc code{color:var(--text);padding:.2em .4em;margin:0;font-size:85%;background-color:var(--accent);border-radius:6px;}.pdoc a > code{color:inherit;}.pdoc pre > code{display:inline-block;font-size:inherit;background:none;border:none;padding:0;}.pdoc > section:not(.module-info){margin-bottom:1.5rem;}.pdoc .modulename{margin-top:0;font-weight:bold;}.pdoc .modulename a{color:var(--link);transition:100ms all;}.pdoc .git-button{float:right;border:solid var(--link) 1px;}.pdoc .git-button:hover{background-color:var(--link);color:var(--pdoc-background);}.view-source-toggle-state,.view-source-toggle-state ~ .pdoc-code{display:none;}.view-source-toggle-state:checked ~ .pdoc-code{display:block;}.view-source-button{display:inline-block;float:right;font-size:.75rem;line-height:1.5rem;color:var(--muted);padding:0 .4rem 0 1.3rem;cursor:pointer;text-indent:-2px;}.view-source-button > span{visibility:hidden;}.module-info .view-source-button{float:none;display:flex;justify-content:flex-end;margin:-1.2rem .4rem -.2rem 0;}.view-source-button::before{position:absolute;content:"View Source";display:list-item;list-style-type:disclosure-closed;}.view-source-toggle-state:checked ~ .attr .view-source-button::before,.view-source-toggle-state:checked ~ .view-source-button::before{list-style-type:disclosure-open;}.pdoc .docstring{margin-bottom:1.5rem;}.pdoc section:not(.module-info) .docstring{margin-left:clamp(0rem, 5vw - 2rem, 1rem);}.pdoc .docstring .pdoc-code{margin-left:1em;margin-right:1em;}.pdoc h1:target,.pdoc h2:target,.pdoc h3:target,.pdoc h4:target,.pdoc h5:target,.pdoc h6:target,.pdoc .pdoc-code > pre > span:target{background-color:var(--active);box-shadow:-1rem 0 0 0 var(--active);}.pdoc .pdoc-code > pre > span:target{display:block;}.pdoc div:target > .attr,.pdoc section:target > .attr,.pdoc dd:target > a{background-color:var(--active);}.pdoc *{scroll-margin:2rem;}.pdoc .pdoc-code .linenos{user-select:none;}.pdoc .attr:hover{filter:contrast(0.95);}.pdoc section, .pdoc .classattr{position:relative;}.pdoc .headerlink{--width:clamp(1rem, 3vw, 2rem);position:absolute;top:0;left:calc(0rem - var(--width));transition:all 100ms ease-in-out;opacity:0;}.pdoc .headerlink::before{content:"#";display:block;text-align:center;width:var(--width);height:2.3rem;line-height:2.3rem;font-size:1.5rem;}.pdoc .attr:hover ~ .headerlink,.pdoc *:target > .headerlink,.pdoc .headerlink:hover{opacity:1;}.pdoc .attr{display:block;margin:.5rem 0 .5rem;padding:.4rem .4rem .4rem 1rem;background-color:var(--accent);overflow-x:auto;}.pdoc .classattr{margin-left:2rem;}.pdoc .decorator-deprecated{color:#842029;}.pdoc .decorator-deprecated ~ span{filter:grayscale(1) opacity(0.8);}.pdoc .name{color:var(--name);font-weight:bold;}.pdoc .def{color:var(--def);font-weight:bold;}.pdoc .signature{background-color:transparent;}.pdoc .param, .pdoc .return-annotation{white-space:pre;}.pdoc .signature.multiline .param{display:block;}.pdoc .signature.condensed .param{display:inline-block;}.pdoc .annotation{color:var(--annotation);}.pdoc .view-value-toggle-state,.pdoc .view-value-toggle-state ~ .default_value{display:none;}.pdoc .view-value-toggle-state:checked ~ .default_value{display:inherit;}.pdoc .view-value-button{font-size:.5rem;vertical-align:middle;border-style:dashed;margin-top:-0.1rem;}.pdoc .view-value-button:hover{background:white;}.pdoc .view-value-button::before{content:"show";text-align:center;width:2.2em;display:inline-block;}.pdoc .view-value-toggle-state:checked ~ .view-value-button::before{content:"hide";}.pdoc .inherited{margin-left:2rem;}.pdoc .inherited dt{font-weight:700;}.pdoc .inherited dt, .pdoc .inherited dd{display:inline;margin-left:0;margin-bottom:.5rem;}.pdoc .inherited dd:not(:last-child):after{content:", ";}.pdoc .inherited .class:before{content:"class ";}.pdoc .inherited .function a:after{content:"()";}.pdoc .search-result .docstring{overflow:auto;max-height:25vh;}.pdoc .search-result.focused > .attr{background-color:var(--active);}.pdoc .attribution{margin-top:2rem;display:block;opacity:0.5;transition:all 200ms;filter:grayscale(100%);}.pdoc .attribution:hover{opacity:1;filter:grayscale(0%);}.pdoc .attribution img{margin-left:5px;height:35px;vertical-align:middle;width:70px;transition:all 200ms;}.pdoc table{display:block;width:max-content;max-width:100%;overflow:auto;margin-bottom:1rem;}.pdoc table th{font-weight:600;}.pdoc table th, .pdoc table td{padding:6px 13px;border:1px solid var(--accent2);}</style>
<style>/*! custom.css */</style></head>
<body>
<nav class="pdoc">
<label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label>
<input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1">
<div> <a class="pdoc-button module-list-button" href="../dialects.html">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z"/>
<path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z"/>
</svg> &nbsp;sqlglot.dialects</a>
<input type="search" placeholder="Search..." role="searchbox" aria-label="search"
pattern=".+" required>
<h2>API Documentation</h2>
<ul class="memberlist">
<li>
<a class="variable" href="#DATEΤΙΜΕ_DELTA">DATEΤΙΜΕ_DELTA</a>
</li>
<li>
<a class="class" href="#ClickHouse">ClickHouse</a>
<ul class="memberlist">
<li>
<a class="variable" href="#ClickHouse.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.NULL_ORDERING">NULL_ORDERING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.SAFE_DIVISION">SAFE_DIVISION</a>
</li>
<li>
<a class="variable" href="#ClickHouse.LOG_BASE_FIRST">LOG_BASE_FIRST</a>
</li>
<li>
<a class="variable" href="#ClickHouse.FORCE_EARLY_ALIAS_REF_EXPANSION">FORCE_EARLY_ALIAS_REF_EXPANSION</a>
</li>
<li>
<a class="variable" href="#ClickHouse.PRESERVE_ORIGINAL_NAMES">PRESERVE_ORIGINAL_NAMES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.NUMBERS_CAN_BE_UNDERSCORE_SEPARATED">NUMBERS_CAN_BE_UNDERSCORE_SEPARATED</a>
</li>
<li>
<a class="variable" href="#ClickHouse.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a>
</li>
<li>
<a class="variable" href="#ClickHouse.HEX_STRING_IS_INTEGER_TYPE">HEX_STRING_IS_INTEGER_TYPE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.NORMALIZATION_STRATEGY">NORMALIZATION_STRATEGY</a>
</li>
<li>
<a class="variable" href="#ClickHouse.UNESCAPED_SEQUENCES">UNESCAPED_SEQUENCES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.CREATABLE_KIND_MAPPING">CREATABLE_KIND_MAPPING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.SET_OP_DISTINCT_BY_DEFAULT">SET_OP_DISTINCT_BY_DEFAULT</a>
</li>
<li>
<a class="function" href="#ClickHouse.generate_values_aliases">generate_values_aliases</a>
</li>
<li>
<a class="class" href="#ClickHouse.Tokenizer">ClickHouse.Tokenizer</a>
<ul class="memberlist">
<li>
<a class="variable" href="#ClickHouse.Tokenizer.COMMENTS">COMMENTS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.IDENTIFIERS">IDENTIFIERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.IDENTIFIER_ESCAPES">IDENTIFIER_ESCAPES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.STRING_ESCAPES">STRING_ESCAPES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.BIT_STRINGS">BIT_STRINGS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.HEX_STRINGS">HEX_STRINGS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.HEREDOC_STRINGS">HEREDOC_STRINGS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.KEYWORDS">KEYWORDS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Tokenizer.SINGLE_TOKENS">SINGLE_TOKENS</a>
</li>
</ul>
</li>
<li>
<a class="class" href="#ClickHouse.Parser">ClickHouse.Parser</a>
<ul class="memberlist">
<li>
<a class="variable" href="#ClickHouse.Parser.MODIFIERS_ATTACHED_TO_SET_OP">MODIFIERS_ATTACHED_TO_SET_OP</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.INTERVAL_SPANS">INTERVAL_SPANS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.OPTIONAL_ALIAS_TOKEN_CTE">OPTIONAL_ALIAS_TOKEN_CTE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.FUNCTIONS">FUNCTIONS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.AGG_FUNCTIONS">AGG_FUNCTIONS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.AGG_FUNCTIONS_SUFFIXES">AGG_FUNCTIONS_SUFFIXES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.FUNC_TOKENS">FUNC_TOKENS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.RESERVED_TOKENS">RESERVED_TOKENS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.AGG_FUNC_MAPPING">AGG_FUNC_MAPPING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.FUNCTIONS_WITH_ALIASED_ARGS">FUNCTIONS_WITH_ALIASED_ARGS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.FUNCTION_PARSERS">FUNCTION_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.NO_PAREN_FUNCTIONS">NO_PAREN_FUNCTIONS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.RANGE_PARSERS">RANGE_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.COLUMN_OPERATORS">COLUMN_OPERATORS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.JOIN_KINDS">JOIN_KINDS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.ALIAS_TOKENS">ALIAS_TOKENS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.QUERY_MODIFIER_PARSERS">QUERY_MODIFIER_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.CONSTRAINT_PARSERS">CONSTRAINT_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.ALTER_PARSERS">ALTER_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.SCHEMA_UNNAMED_CONSTRAINTS">SCHEMA_UNNAMED_CONSTRAINTS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.PLACEHOLDER_PARSERS">PLACEHOLDER_PARSERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.SHOW_TRIE">SHOW_TRIE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Parser.SET_TRIE">SET_TRIE</a>
</li>
</ul>
</li>
<li>
<a class="class" href="#ClickHouse.Generator">ClickHouse.Generator</a>
<ul class="memberlist">
<li>
<a class="variable" href="#ClickHouse.Generator.QUERY_HINTS">QUERY_HINTS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.STRUCT_DELIMITER">STRUCT_DELIMITER</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.NVL2_SUPPORTED">NVL2_SUPPORTED</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.TABLESAMPLE_REQUIRES_PARENS">TABLESAMPLE_REQUIRES_PARENS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.TABLESAMPLE_SIZE_IS_ROWS">TABLESAMPLE_SIZE_IS_ROWS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.TABLESAMPLE_KEYWORDS">TABLESAMPLE_KEYWORDS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.LAST_DAY_SUPPORTS_DATE_PART">LAST_DAY_SUPPORTS_DATE_PART</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.CAN_IMPLEMENT_ARRAY_ANY">CAN_IMPLEMENT_ARRAY_ANY</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.SUPPORTS_TO_NUMBER">SUPPORTS_TO_NUMBER</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.JOIN_HINTS">JOIN_HINTS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.TABLE_HINTS">TABLE_HINTS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.GROUPINGS_SEP">GROUPINGS_SEP</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.SET_OP_MODIFIERS">SET_OP_MODIFIERS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.ARRAY_SIZE_NAME">ARRAY_SIZE_NAME</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.WRAP_DERIVED_VALUES">WRAP_DERIVED_VALUES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.STRING_TYPE_MAPPING">STRING_TYPE_MAPPING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.SUPPORTED_JSON_PATH_PARTS">SUPPORTED_JSON_PATH_PARTS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.TYPE_MAPPING">TYPE_MAPPING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.TRANSFORMS">TRANSFORMS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.PROPERTIES_LOCATION">PROPERTIES_LOCATION</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.ON_CLUSTER_TARGETS">ON_CLUSTER_TARGETS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.NON_NULLABLE_TYPES">NON_NULLABLE_TYPES</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.strtodate_sql">strtodate_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.cast_sql">cast_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.trycast_sql">trycast_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.likeproperty_sql">likeproperty_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.eq_sql">eq_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.neq_sql">neq_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.regexpilike_sql">regexpilike_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.datatype_sql">datatype_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.cte_sql">cte_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.after_limit_modifiers">after_limit_modifiers</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.placeholder_sql">placeholder_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.oncluster_sql">oncluster_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.createable_sql">createable_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.create_sql">create_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.prewhere_sql">prewhere_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.indexcolumnconstraint_sql">indexcolumnconstraint_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.partition_sql">partition_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.partitionid_sql">partitionid_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.replacepartition_sql">replacepartition_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.projectiondef_sql">projectiondef_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.is_sql">is_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.in_sql">in_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.not_sql">not_sql</a>
</li>
<li>
<a class="function" href="#ClickHouse.Generator.values_sql">values_sql</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.SELECT_KINDS">SELECT_KINDS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.TRY_SUPPORTED">TRY_SUPPORTED</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.SUPPORTS_UESCAPE">SUPPORTS_UESCAPE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS">AFTER_HAVING_MODIFIER_TRANSFORMS</a>
</li>
</ul>
</li>
<li>
<a class="variable" href="#ClickHouse.SUPPORTS_COLUMN_JOIN_MARKS">SUPPORTS_COLUMN_JOIN_MARKS</a>
</li>
<li>
<a class="variable" href="#ClickHouse.tokenizer_class">tokenizer_class</a>
</li>
<li>
<a class="variable" href="#ClickHouse.jsonpath_tokenizer_class">jsonpath_tokenizer_class</a>
</li>
<li>
<a class="variable" href="#ClickHouse.parser_class">parser_class</a>
</li>
<li>
<a class="variable" href="#ClickHouse.generator_class">generator_class</a>
</li>
<li>
<a class="variable" href="#ClickHouse.TIME_TRIE">TIME_TRIE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.FORMAT_TRIE">FORMAT_TRIE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.INVERSE_TIME_MAPPING">INVERSE_TIME_MAPPING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.INVERSE_TIME_TRIE">INVERSE_TIME_TRIE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.INVERSE_FORMAT_MAPPING">INVERSE_FORMAT_MAPPING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.INVERSE_FORMAT_TRIE">INVERSE_FORMAT_TRIE</a>
</li>
<li>
<a class="variable" href="#ClickHouse.INVERSE_CREATABLE_KIND_MAPPING">INVERSE_CREATABLE_KIND_MAPPING</a>
</li>
<li>
<a class="variable" href="#ClickHouse.ESCAPED_SEQUENCES">ESCAPED_SEQUENCES</a>
</li>
<li>
<a class="variable" href="#ClickHouse.QUOTE_START">QUOTE_START</a>
</li>
<li>
<a class="variable" href="#ClickHouse.QUOTE_END">QUOTE_END</a>
</li>
<li>
<a class="variable" href="#ClickHouse.IDENTIFIER_START">IDENTIFIER_START</a>
</li>
<li>
<a class="variable" href="#ClickHouse.IDENTIFIER_END">IDENTIFIER_END</a>
</li>
<li>
<a class="variable" href="#ClickHouse.BIT_START">BIT_START</a>
</li>
<li>
<a class="variable" href="#ClickHouse.BIT_END">BIT_END</a>
</li>
<li>
<a class="variable" href="#ClickHouse.HEX_START">HEX_START</a>
</li>
<li>
<a class="variable" href="#ClickHouse.HEX_END">HEX_END</a>
</li>
<li>
<a class="variable" href="#ClickHouse.BYTE_START">BYTE_START</a>
</li>
<li>
<a class="variable" href="#ClickHouse.BYTE_END">BYTE_END</a>
</li>
<li>
<a class="variable" href="#ClickHouse.UNICODE_START">UNICODE_START</a>
</li>
<li>
<a class="variable" href="#ClickHouse.UNICODE_END">UNICODE_END</a>
</li>
</ul>
</li>
</ul>
<footer>Copyright (c) 2023 Toby Mao</footer>
<a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank">
built with <span class="visually-hidden">pdoc</span><img
alt="pdoc logo"
src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612-2.021%201.25-.079.295.021.601.274.837.219.203.415.364.598.501-.667.304-1.243.698-1.311%201.179-.02.144-.022.507.393.787.213.144.395.26.564.365-1.285.521-1.361.96-1.381%201.126-.018.142-.011.496.427.746l.854.489c-.473.389-.971.914-.999%201.429-.018.278.095.532.316.713.675.556%201.231.721%201.653.721.059%200%20.104-.014.158-.02.207.707.641%201.64%201.513%201.64h.013c.8-.008%201.236-.345%201.462-.626.173-.216.268-.457.325-.692.424.195.93.374%201.372.374.151%200%20.294-.021.423-.068.732-.27.944-.704.993-1.021.009-.061.003-.119.002-.179.266.086.538.147.789.147.15%200%20.294-.021.423-.069.542-.2.797-.489.914-.754.237.147.478.258.704.288.106.014.205.021.296.021.356%200%20.595-.101.767-.229.438.435%201.094.992%201.656%201.067.106.014.205.021.296.021a1.56%201.56%200%200%200%20.323-.035c.17.575.453%201.289.866%201.605.358.273.665.362.914.362a.99.99%200%200%200%20.421-.093%201.03%201.03%200%200%200%20.245-.164c.168.428.39.846.68%201.068.358.273.665.362.913.362a.99.99%200%200%200%20.421-.093c.317-.148.512-.448.639-.762.251.157.495.257.726.257.127%200%20.25-.024.37-.071.427-.17.706-.617.841-1.314.022-.015.047-.022.068-.038.067-.051.133-.104.196-.159-.443%201.486-1.107%202.761-2.086%203.257zM8.66%209.925a.5.5%200%201%200-1%200c0%20.653-.818%201.205-1.787%201.205s-1.787-.552-1.787-1.205a.5.5%200%201%200-1%200c0%201.216%201.25%202.205%202.787%202.205s2.787-.989%202.787-2.205zm4.4%2015.965l-.208.097c-2.661%201.258-4.708%201.436-6.086.527-1.542-1.017-1.88-3.19-1.844-4.198a.4.4%200%200%200-.385-.414c-.242-.029-.406.164-.414.385-.046%201.249.367%203.686%202.202%204.896.708.467%201.547.7%202.51.7%201.248%200%202.706-.392%204.362-1.174l.185-.086a.4.4%200%200%200%20.205-.527c-.089-.204-.326-.291-.527-.206zM9.547%202.292c.093.077.205.114.317.114a.5.5%200%200%200%20.318-.886L8.817.397a.5.5%200%200%200-.703.068.5.5%200%200%200%20.069.703l1.364%201.124zm-7.661-.065c.086%200%20.173-.022.253-.068l1.523-.893a.5.5%200%200%200-.506-.863l-1.523.892a.5.5%200%200%200-.179.685c.094.158.261.247.432.247z%22%20transform%3D%22matrix%28-1%200%200%201%2058%200%29%22%20fill%3D%22%233bb300%22/%3E%3Cpath%20d%3D%22M.3%2021.86V10.18q0-.46.02-.68.04-.22.18-.5.28-.54%201.34-.54%201.06%200%201.42.28.38.26.44.78.76-1.04%202.38-1.04%201.64%200%203.1%201.54%201.46%201.54%201.46%203.58%200%202.04-1.46%203.58-1.44%201.54-3.08%201.54-1.64%200-2.38-.92v4.04q0%20.46-.04.68-.02.22-.18.5-.14.3-.5.42-.36.12-.98.12-.62%200-1-.12-.36-.12-.52-.4-.14-.28-.18-.5-.02-.22-.02-.68zm3.96-9.42q-.46.54-.46%201.18%200%20.64.46%201.18.48.52%201.2.52.74%200%201.24-.52.52-.52.52-1.18%200-.66-.48-1.18-.48-.54-1.26-.54-.76%200-1.22.54zm14.741-8.36q.16-.3.54-.42.38-.12%201-.12.64%200%201.02.12.38.12.52.42.16.3.18.54.04.22.04.68v11.94q0%20.46-.04.7-.02.22-.18.5-.3.54-1.7.54-1.38%200-1.54-.98-.84.96-2.34.96-1.8%200-3.28-1.56-1.48-1.58-1.48-3.66%200-2.1%201.48-3.68%201.5-1.58%203.28-1.58%201.48%200%202.3%201v-4.2q0-.46.02-.68.04-.24.18-.52zm-3.24%2010.86q.52.54%201.26.54.74%200%201.22-.54.5-.54.5-1.18%200-.66-.48-1.22-.46-.56-1.26-.56-.8%200-1.28.56-.48.54-.48%201.2%200%20.66.52%201.2zm7.833-1.2q0-2.4%201.68-3.96%201.68-1.56%203.84-1.56%202.16%200%203.82%201.56%201.66%201.54%201.66%203.94%200%201.66-.86%202.96-.86%201.28-2.1%201.9-1.22.6-2.54.6-1.32%200-2.56-.64-1.24-.66-2.1-1.92-.84-1.28-.84-2.88zm4.18%201.44q.64.48%201.3.48.66%200%201.32-.5.66-.5.66-1.48%200-.98-.62-1.46-.62-.48-1.34-.48-.72%200-1.34.5-.62.5-.62%201.48%200%20.96.64%201.46zm11.412-1.44q0%20.84.56%201.32.56.46%201.18.46.64%200%201.18-.36.56-.38.9-.38.6%200%201.46%201.06.46.58.46%201.04%200%20.76-1.1%201.42-1.14.8-2.8.8-1.86%200-3.58-1.34-.82-.64-1.34-1.7-.52-1.08-.52-2.36%200-1.3.52-2.34.52-1.06%201.34-1.7%201.66-1.32%203.54-1.32.76%200%201.48.22.72.2%201.06.4l.32.2q.36.24.56.38.52.4.52.92%200%20.5-.42%201.14-.72%201.1-1.38%201.1-.38%200-1.08-.44-.36-.34-1.04-.34-.66%200-1.24.48-.58.48-.58%201.34z%22%20fill%3D%22green%22/%3E%3C/svg%3E"/>
</a>
</div>
</nav>
<main class="pdoc">
<section class="module-info">
<a class="pdoc-button git-button" href="https://github.com/tobymao/sqlglot/tree/main/sqlglot/dialects/clickhouse.py">Edit on GitHub</a>
<h1 class="modulename">
<a href="./../../sqlglot.html">sqlglot</a><wbr>.<a href="./../dialects.html">dialects</a><wbr>.clickhouse </h1>
<input id="mod-clickhouse-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-source-button" for="mod-clickhouse-view-source"><span>View Source</span></label>
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">__future__</span><span class="w"> </span><span class="kn">import</span> <span class="n">annotations</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="kn">import</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">t</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span><span class="w"> </span><span class="nn">datetime</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot</span><span class="w"> </span><span class="kn">import</span> <span class="n">exp</span><span class="p">,</span> <span class="n">generator</span><span class="p">,</span> <span class="n">parser</span><span class="p">,</span> <span class="n">tokens</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.dialects.dialect</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a> <span class="n">Dialect</span><span class="p">,</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a> <span class="n">NormalizationStrategy</span><span class="p">,</span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a> <span class="n">arg_max_or_min_no_count</span><span class="p">,</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a> <span class="n">build_date_delta</span><span class="p">,</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a> <span class="n">build_formatted_time</span><span class="p">,</span>
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="n">inline_array_sql</span><span class="p">,</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a> <span class="n">json_extract_segments</span><span class="p">,</span>
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a> <span class="n">json_path_key_only_name</span><span class="p">,</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="n">length_or_char_length_sql</span><span class="p">,</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="n">no_pivot_sql</span><span class="p">,</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">build_json_extract_path</span><span class="p">,</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="n">rename_func</span><span class="p">,</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> <span class="n">sha256_sql</span><span class="p">,</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="n">strposition_sql</span><span class="p">,</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="n">var_map_sql</span><span class="p">,</span>
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="n">unit_to_var</span><span class="p">,</span>
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="n">trim_sql</span><span class="p">,</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a><span class="p">)</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">Generator</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.helper</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_int</span><span class="p">,</span> <span class="n">seq_get</span>
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.tokens</span><span class="w"> </span><span class="kn">import</span> <span class="n">Token</span><span class="p">,</span> <span class="n">TokenType</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">unsupported_args</span>
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a>
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a><span class="n">DATEΤΙΜΕ_DELTA</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">]</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_build_date_format</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">&quot;clickhouse&quot;</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">timezone</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="k">if</span> <span class="n">timezone</span><span class="p">:</span>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;zone&quot;</span><span class="p">,</span> <span class="n">timezone</span><span class="p">)</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">return</span> <span class="n">expr</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a>
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_unix_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">ClickHouse</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scale&quot;</span><span class="p">)</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="n">timestamp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">SECONDS</span><span class="p">):</span>
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;fromUnixTimestamp&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">))</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MILLIS</span><span class="p">:</span>
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;fromUnixTimestamp64Milli&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">))</span>
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MICROS</span><span class="p">:</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;fromUnixTimestamp64Micro&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">))</span>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">NANOS</span><span class="p">:</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;fromUnixTimestamp64Nano&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">))</span>
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a>
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="s2">&quot;fromUnixTimestamp&quot;</span><span class="p">,</span>
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span>
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;POW&quot;</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="n">scale</span><span class="p">)),</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="p">),</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="p">)</span>
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a>
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_lower_func</span><span class="p">(</span><span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="n">index</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s2">&quot;(&quot;</span><span class="p">)</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="k">return</span> <span class="n">sql</span><span class="p">[:</span><span class="n">index</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">+</span> <span class="n">sql</span><span class="p">[</span><span class="n">index</span><span class="p">:]</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_quantile_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">ClickHouse</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">quantile</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;quantile&quot;</span><span class="p">]</span>
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="n">args</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span>
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">quantile</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;quantiles&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">quantile</span><span class="p">)</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;quantile&quot;</span><span class="p">,</span> <span class="n">quantile</span><span class="p">)</span>
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="k">return</span> <span class="n">func</span> <span class="o">+</span> <span class="n">args</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_build_count_if</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedAggFunc</span><span class="p">:</span>
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a>
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedAggFunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">&quot;countIf&quot;</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span>
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a>
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a>
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_build_str_to_date</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">:</span>
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">&quot;STR_TO_DATE&quot;</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span>
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">strtodate</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">strtodate</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">))</span>
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a>
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a>
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_datetime_delta_sql</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">DATEΤΙΜΕ_DELTA</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span>
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_delta_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">DATEΤΙΜΕ_DELTA</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">unit</span><span class="p">:</span>
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a>
</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a> <span class="n">name</span><span class="p">,</span>
</span><span id="L-103"><a href="#L-103"><span class="linenos"> 103</span></a> <span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span>
</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="L-106"><a href="#L-106"><span class="linenos"> 106</span></a> <span class="p">)</span>
</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a>
</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a> <span class="k">return</span> <span class="n">_delta_sql</span>
</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</span></a>
</span><span id="L-110"><a href="#L-110"><span class="linenos"> 110</span></a>
</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">ClickHouse</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">):</span>
</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a> <span class="n">ts</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a>
</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a> <span class="n">tz</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;zone&quot;</span><span class="p">)</span>
</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a> <span class="k">if</span> <span class="n">tz</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span>
</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> <span class="c1"># Clickhouse will not accept timestamps that include a UTC offset, so we must remove them.</span>
</span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a> <span class="c1"># The first step to removing is parsing the string with `datetime.datetime.fromisoformat`.</span>
</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> <span class="c1">#</span>
</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a> <span class="c1"># In python &lt;3.11, `fromisoformat()` can only parse timestamps of millisecond (3 digit)</span>
</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> <span class="c1"># or microsecond (6 digit) precision. It will error if passed any other number of fractional</span>
</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> <span class="c1"># digits, so we extract the fractional seconds and pad to 6 digits before parsing.</span>
</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="n">ts_string</span> <span class="o">=</span> <span class="n">ts</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a>
</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="c1"># separate [date and time] from [fractional seconds and UTC offset]</span>
</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="n">ts_parts</span> <span class="o">=</span> <span class="n">ts_string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ts_parts</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="c1"># separate fractional seconds and UTC offset</span>
</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a> <span class="n">offset_sep</span> <span class="o">=</span> <span class="s2">&quot;+&quot;</span> <span class="k">if</span> <span class="s2">&quot;+&quot;</span> <span class="ow">in</span> <span class="n">ts_parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">else</span> <span class="s2">&quot;-&quot;</span>
</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="n">ts_frac_parts</span> <span class="o">=</span> <span class="n">ts_parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">offset_sep</span><span class="p">)</span>
</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> <span class="n">num_frac_parts</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ts_frac_parts</span><span class="p">)</span>
</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a>
</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="c1"># pad to 6 digits if fractional seconds present</span>
</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a> <span class="n">ts_frac_parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">ts_frac_parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="s2">&quot;0&quot;</span><span class="p">)</span>
</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="n">ts_string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a> <span class="p">[</span>
</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a> <span class="n">ts_parts</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="c1"># date and time</span>
</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="s2">&quot;.&quot;</span><span class="p">,</span>
</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="n">ts_frac_parts</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="c1"># fractional seconds</span>
</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="n">offset_sep</span> <span class="k">if</span> <span class="n">num_frac_parts</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="n">ts_frac_parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="n">num_frac_parts</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="c1"># utc offset (if present)</span>
</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="p">]</span>
</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="p">)</span>
</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a>
</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="c1"># return literal with no timezone, eg turn &#39;2020-01-01 12:13:14-08:00&#39; into &#39;2020-01-01 12:13:14&#39;</span>
</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="c1"># this is because Clickhouse encodes the timezone as a data type parameter and throws an error if</span>
</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="c1"># it&#39;s part of the timestamp string</span>
</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="n">ts_without_tz</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromisoformat</span><span class="p">(</span><span class="n">ts_string</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(</span><span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</span><span class="p">)</span>
</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="p">)</span>
</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="n">ts</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">ts_without_tz</span><span class="p">)</span>
</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a>
</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="c1"># Non-nullable DateTime64 with microsecond precision</span>
</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">tz</span><span class="p">)]</span> <span class="k">if</span> <span class="n">tz</span> <span class="k">else</span> <span class="p">[]</span>
</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">datatype</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span>
</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">6</span><span class="p">)),</span> <span class="o">*</span><span class="n">expressions</span><span class="p">],</span>
</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="n">nullable</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="p">)</span>
</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a>
</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span> <span class="n">datatype</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">))</span>
</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a>
</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a>
</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_map_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">ClickHouse</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">&quot;settings&quot;</span><span class="p">):</span>
</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="k">return</span> <span class="n">_lower_func</span><span class="p">(</span><span class="n">var_map_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">))</span>
</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a>
</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;keys&quot;</span><span class="p">)</span>
</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;values&quot;</span><span class="p">)</span>
</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a>
</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keys</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">&quot;Cannot convert array columns into map.&quot;</span><span class="p">)</span>
</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="k">return</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a>
</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">keys</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span><span class="p">):</span>
</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">key</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a>
</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="n">csv_args</span> <span class="o">=</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a>
</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">{{</span><span class="si">{</span><span class="n">csv_args</span><span class="si">}</span><span class="se">}}</span><span class="s2">&quot;</span>
</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a>
</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a>
</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a><span class="k">class</span><span class="w"> </span><span class="nc">ClickHouse</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_last&quot;</span>
</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="n">SAFE_DIVISION</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="n">LOG_BASE_FIRST</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="n">FORCE_EARLY_ALIAS_REF_EXPANSION</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="n">PRESERVE_ORIGINAL_NAMES</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="n">NUMBERS_CAN_BE_UNDERSCORE_SEPARATED</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="n">HEX_STRING_IS_INTEGER_TYPE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a>
</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="c1"># https://github.com/ClickHouse/ClickHouse/issues/33935#issue-1112165779</span>
</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">NORMALIZATION_STRATEGY</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span>
</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a>
</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="n">UNESCAPED_SEQUENCES</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">0&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="se">\0</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="p">}</span>
</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a>
</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">CREATABLE_KIND_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;DATABASE&quot;</span><span class="p">:</span> <span class="s2">&quot;SCHEMA&quot;</span><span class="p">}</span>
</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a>
</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">SET_OP_DISTINCT_BY_DEFAULT</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="p">}</span>
</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a>
</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">generate_values_aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]:</span>
</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="c1"># Clickhouse allows VALUES to have an embedded structure e.g:</span>
</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="c1"># VALUES(&#39;person String, place String&#39;, (&#39;Noah&#39;, &#39;Paris&#39;), ...)</span>
</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="c1"># In this case, we don&#39;t want to qualify the columns</span>
</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a>
</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">structure</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">))</span>
</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="k">else</span> <span class="kc">None</span>
</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="p">)</span>
</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="k">if</span> <span class="n">structure</span><span class="p">:</span>
</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="c1"># Split each column definition into the column name e.g:</span>
</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="c1"># &#39;person String, place String&#39; -&gt; [&#39;person&#39;, &#39;place&#39;]</span>
</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">structure_coldefs</span> <span class="o">=</span> <span class="p">[</span><span class="n">coldef</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">coldef</span> <span class="ow">in</span> <span class="n">structure</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span>
</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">column_aliases</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">coldef</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="k">for</span> <span class="n">coldef</span> <span class="ow">in</span> <span class="n">structure_coldefs</span>
</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="p">]</span>
</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="c1"># Default column aliases in CH are &quot;c1&quot;, &quot;c2&quot;, etc.</span>
</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">column_aliases</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;c</span><span class="si">{</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span>
</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="p">]</span>
</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a>
</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="k">return</span> <span class="n">column_aliases</span>
</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a>
</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="s2">&quot;#!&quot;</span><span class="p">,</span> <span class="p">(</span><span class="s2">&quot;/*&quot;</span><span class="p">,</span> <span class="s2">&quot;*/&quot;</span><span class="p">)]</span>
</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;0b&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)]</span>
</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;0x&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;0X&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)]</span>
</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;$&quot;</span><span class="p">]</span>
</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a>
</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="s2">&quot;.:&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOTCOLON</span><span class="p">,</span>
</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="s2">&quot;ATTACH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="s2">&quot;DATE32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span>
</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="s2">&quot;DATETIME64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span>
</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="s2">&quot;DICTIONARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span>
</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="s2">&quot;DYNAMIC&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DYNAMIC</span><span class="p">,</span>
</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="s2">&quot;ENUM8&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">,</span>
</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="s2">&quot;ENUM16&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">,</span>
</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="s2">&quot;FINAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span>
</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="s2">&quot;FIXEDSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">,</span>
</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="s2">&quot;FLOAT32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span>
</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="s2">&quot;FLOAT64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span>
</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="s2">&quot;GLOBAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">,</span>
</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="s2">&quot;LOWCARDINALITY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">,</span>
</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="s2">&quot;MAP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span>
</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="s2">&quot;NESTED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NESTED</span><span class="p">,</span>
</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="s2">&quot;SAMPLE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span>
</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="s2">&quot;TUPLE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span>
</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="s2">&quot;UINT16&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span>
</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="s2">&quot;UINT32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span>
</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="s2">&quot;UINT64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span>
</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="s2">&quot;UINT8&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span>
</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="s2">&quot;IPV4&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV4</span><span class="p">,</span>
</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="s2">&quot;IPV6&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV6</span><span class="p">,</span>
</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="s2">&quot;POINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">POINT</span><span class="p">,</span>
</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="s2">&quot;RING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RING</span><span class="p">,</span>
</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="s2">&quot;LINESTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">,</span>
</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="s2">&quot;MULTILINESTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">,</span>
</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="s2">&quot;POLYGON&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">,</span>
</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="s2">&quot;MULTIPOLYGON&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">,</span>
</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="s2">&quot;AGGREGATEFUNCTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">,</span>
</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="s2">&quot;SIMPLEAGGREGATEFUNCTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">,</span>
</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="s2">&quot;SYSTEM&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="s2">&quot;PREWHERE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">,</span>
</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="p">}</span>
</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;/*+&quot;</span><span class="p">)</span>
</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a>
</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span>
</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="p">}</span>
</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a>
</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="c1"># Tested in ClickHouse&#39;s playground, it seems that the following two queries do the same thing</span>
</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="c1"># * select x from t1 union all select x from t2 limit 1;</span>
</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="c1"># * select x from t1 union all (select x from t2 limit 1);</span>
</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="n">MODIFIERS_ATTACHED_TO_SET_OP</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="n">INTERVAL_SPANS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">OPTIONAL_ALIAS_TOKEN_CTE</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a>
</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="s2">&quot;ANY&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="s2">&quot;ARRAYSUM&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="s2">&quot;COUNTIF&quot;</span><span class="p">:</span> <span class="n">_build_count_if</span><span class="p">,</span>
</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="s2">&quot;DATE_ADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="s2">&quot;DATEADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">:</span> <span class="n">_build_date_format</span><span class="p">,</span>
</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="s2">&quot;DATE_SUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="s2">&quot;DATESUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="s2">&quot;FORMATDATETIME&quot;</span><span class="p">:</span> <span class="n">_build_date_format</span><span class="p">,</span>
</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="s2">&quot;JSONEXTRACTSTRING&quot;</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span>
</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">zero_based_indexing</span><span class="o">=</span><span class="kc">False</span>
</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="p">),</span>
</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="s2">&quot;LENGTH&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">binary</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="s2">&quot;MAP&quot;</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">build_var_map</span><span class="p">,</span>
</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="s2">&quot;MATCH&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="s2">&quot;RANDCANONICAL&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="s2">&quot;STR_TO_DATE&quot;</span><span class="p">:</span> <span class="n">_build_str_to_date</span><span class="p">,</span>
</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="s2">&quot;TUPLE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="s2">&quot;TIMESTAMP_SUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="s2">&quot;TIMESTAMPSUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="s2">&quot;TIMESTAMP_ADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="s2">&quot;TIMESTAMPADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="s2">&quot;UNIQ&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="s2">&quot;XOR&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">),</span>
</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="s2">&quot;MD5&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MD5Digest</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="s2">&quot;SHA256&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">256</span><span class="p">)),</span>
</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="s2">&quot;SHA512&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">512</span><span class="p">)),</span>
</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="s2">&quot;EDITDISTANCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="s2">&quot;LEVENSHTEINDISTANCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="p">}</span>
</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;TRANSFORM&quot;</span><span class="p">)</span>
</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a>
</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="n">AGG_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="s2">&quot;count&quot;</span><span class="p">,</span>
</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="s2">&quot;min&quot;</span><span class="p">,</span>
</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="s2">&quot;max&quot;</span><span class="p">,</span>
</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="s2">&quot;sum&quot;</span><span class="p">,</span>
</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="s2">&quot;avg&quot;</span><span class="p">,</span>
</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="s2">&quot;any&quot;</span><span class="p">,</span>
</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="s2">&quot;stddevPop&quot;</span><span class="p">,</span>
</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="s2">&quot;stddevSamp&quot;</span><span class="p">,</span>
</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="s2">&quot;varPop&quot;</span><span class="p">,</span>
</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="s2">&quot;varSamp&quot;</span><span class="p">,</span>
</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="s2">&quot;corr&quot;</span><span class="p">,</span>
</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="s2">&quot;covarPop&quot;</span><span class="p">,</span>
</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="s2">&quot;covarSamp&quot;</span><span class="p">,</span>
</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="s2">&quot;entropy&quot;</span><span class="p">,</span>
</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="s2">&quot;exponentialMovingAverage&quot;</span><span class="p">,</span>
</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="s2">&quot;intervalLengthSum&quot;</span><span class="p">,</span>
</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="s2">&quot;kolmogorovSmirnovTest&quot;</span><span class="p">,</span>
</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="s2">&quot;mannWhitneyUTest&quot;</span><span class="p">,</span>
</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="s2">&quot;median&quot;</span><span class="p">,</span>
</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="s2">&quot;rankCorr&quot;</span><span class="p">,</span>
</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="s2">&quot;sumKahan&quot;</span><span class="p">,</span>
</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="s2">&quot;studentTTest&quot;</span><span class="p">,</span>
</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="s2">&quot;welchTTest&quot;</span><span class="p">,</span>
</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="s2">&quot;anyHeavy&quot;</span><span class="p">,</span>
</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="s2">&quot;anyLast&quot;</span><span class="p">,</span>
</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="s2">&quot;boundingRatio&quot;</span><span class="p">,</span>
</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="s2">&quot;first_value&quot;</span><span class="p">,</span>
</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="s2">&quot;last_value&quot;</span><span class="p">,</span>
</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="s2">&quot;argMin&quot;</span><span class="p">,</span>
</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="s2">&quot;argMax&quot;</span><span class="p">,</span>
</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="s2">&quot;avgWeighted&quot;</span><span class="p">,</span>
</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="s2">&quot;topK&quot;</span><span class="p">,</span>
</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="s2">&quot;topKWeighted&quot;</span><span class="p">,</span>
</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="s2">&quot;deltaSum&quot;</span><span class="p">,</span>
</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="s2">&quot;deltaSumTimestamp&quot;</span><span class="p">,</span>
</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="s2">&quot;groupArray&quot;</span><span class="p">,</span>
</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="s2">&quot;groupArrayLast&quot;</span><span class="p">,</span>
</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="s2">&quot;groupUniqArray&quot;</span><span class="p">,</span>
</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="s2">&quot;groupArrayInsertAt&quot;</span><span class="p">,</span>
</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="s2">&quot;groupArrayMovingAvg&quot;</span><span class="p">,</span>
</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="s2">&quot;groupArrayMovingSum&quot;</span><span class="p">,</span>
</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="s2">&quot;groupArraySample&quot;</span><span class="p">,</span>
</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="s2">&quot;groupBitAnd&quot;</span><span class="p">,</span>
</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="s2">&quot;groupBitOr&quot;</span><span class="p">,</span>
</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="s2">&quot;groupBitXor&quot;</span><span class="p">,</span>
</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="s2">&quot;groupBitmap&quot;</span><span class="p">,</span>
</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="s2">&quot;groupBitmapAnd&quot;</span><span class="p">,</span>
</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="s2">&quot;groupBitmapOr&quot;</span><span class="p">,</span>
</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="s2">&quot;groupBitmapXor&quot;</span><span class="p">,</span>
</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="s2">&quot;sumWithOverflow&quot;</span><span class="p">,</span>
</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="s2">&quot;sumMap&quot;</span><span class="p">,</span>
</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="s2">&quot;minMap&quot;</span><span class="p">,</span>
</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="s2">&quot;maxMap&quot;</span><span class="p">,</span>
</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="s2">&quot;skewSamp&quot;</span><span class="p">,</span>
</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="s2">&quot;skewPop&quot;</span><span class="p">,</span>
</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="s2">&quot;kurtSamp&quot;</span><span class="p">,</span>
</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="s2">&quot;kurtPop&quot;</span><span class="p">,</span>
</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="s2">&quot;uniq&quot;</span><span class="p">,</span>
</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="s2">&quot;uniqExact&quot;</span><span class="p">,</span>
</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="s2">&quot;uniqCombined&quot;</span><span class="p">,</span>
</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="s2">&quot;uniqCombined64&quot;</span><span class="p">,</span>
</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="s2">&quot;uniqHLL12&quot;</span><span class="p">,</span>
</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="s2">&quot;uniqTheta&quot;</span><span class="p">,</span>
</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="s2">&quot;quantile&quot;</span><span class="p">,</span>
</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="s2">&quot;quantiles&quot;</span><span class="p">,</span>
</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="s2">&quot;quantileExact&quot;</span><span class="p">,</span>
</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="s2">&quot;quantilesExact&quot;</span><span class="p">,</span>
</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="s2">&quot;quantileExactLow&quot;</span><span class="p">,</span>
</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="s2">&quot;quantilesExactLow&quot;</span><span class="p">,</span>
</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="s2">&quot;quantileExactHigh&quot;</span><span class="p">,</span>
</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="s2">&quot;quantilesExactHigh&quot;</span><span class="p">,</span>
</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="s2">&quot;quantileExactWeighted&quot;</span><span class="p">,</span>
</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="s2">&quot;quantilesExactWeighted&quot;</span><span class="p">,</span>
</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="s2">&quot;quantileTiming&quot;</span><span class="p">,</span>
</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="s2">&quot;quantilesTiming&quot;</span><span class="p">,</span>
</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="s2">&quot;quantileTimingWeighted&quot;</span><span class="p">,</span>
</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="s2">&quot;quantilesTimingWeighted&quot;</span><span class="p">,</span>
</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="s2">&quot;quantileDeterministic&quot;</span><span class="p">,</span>
</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="s2">&quot;quantilesDeterministic&quot;</span><span class="p">,</span>
</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="s2">&quot;quantileTDigest&quot;</span><span class="p">,</span>
</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="s2">&quot;quantilesTDigest&quot;</span><span class="p">,</span>
</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="s2">&quot;quantileTDigestWeighted&quot;</span><span class="p">,</span>
</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="s2">&quot;quantilesTDigestWeighted&quot;</span><span class="p">,</span>
</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="s2">&quot;quantileBFloat16&quot;</span><span class="p">,</span>
</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="s2">&quot;quantilesBFloat16&quot;</span><span class="p">,</span>
</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="s2">&quot;quantileBFloat16Weighted&quot;</span><span class="p">,</span>
</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="s2">&quot;quantilesBFloat16Weighted&quot;</span><span class="p">,</span>
</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="s2">&quot;simpleLinearRegression&quot;</span><span class="p">,</span>
</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="s2">&quot;stochasticLinearRegression&quot;</span><span class="p">,</span>
</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="s2">&quot;stochasticLogisticRegression&quot;</span><span class="p">,</span>
</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="s2">&quot;categoricalInformationValue&quot;</span><span class="p">,</span>
</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="s2">&quot;contingency&quot;</span><span class="p">,</span>
</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="s2">&quot;cramersV&quot;</span><span class="p">,</span>
</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="s2">&quot;cramersVBiasCorrected&quot;</span><span class="p">,</span>
</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="s2">&quot;theilsU&quot;</span><span class="p">,</span>
</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="s2">&quot;maxIntersections&quot;</span><span class="p">,</span>
</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="s2">&quot;maxIntersectionsPosition&quot;</span><span class="p">,</span>
</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="s2">&quot;meanZTest&quot;</span><span class="p">,</span>
</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="s2">&quot;quantileInterpolatedWeighted&quot;</span><span class="p">,</span>
</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="s2">&quot;quantilesInterpolatedWeighted&quot;</span><span class="p">,</span>
</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="s2">&quot;quantileGK&quot;</span><span class="p">,</span>
</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="s2">&quot;quantilesGK&quot;</span><span class="p">,</span>
</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="s2">&quot;sparkBar&quot;</span><span class="p">,</span>
</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="s2">&quot;sumCount&quot;</span><span class="p">,</span>
</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="s2">&quot;largestTriangleThreeBuckets&quot;</span><span class="p">,</span>
</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="s2">&quot;histogram&quot;</span><span class="p">,</span>
</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="s2">&quot;sequenceMatch&quot;</span><span class="p">,</span>
</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="s2">&quot;sequenceCount&quot;</span><span class="p">,</span>
</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="s2">&quot;windowFunnel&quot;</span><span class="p">,</span>
</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="s2">&quot;retention&quot;</span><span class="p">,</span>
</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="s2">&quot;uniqUpTo&quot;</span><span class="p">,</span>
</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="s2">&quot;sequenceNextNode&quot;</span><span class="p">,</span>
</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="s2">&quot;exponentialTimeDecayedAvg&quot;</span><span class="p">,</span>
</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="p">}</span>
</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a>
</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="n">AGG_FUNCTIONS_SUFFIXES</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="s2">&quot;If&quot;</span><span class="p">,</span>
</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="s2">&quot;Array&quot;</span><span class="p">,</span>
</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="s2">&quot;ArrayIf&quot;</span><span class="p">,</span>
</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="s2">&quot;Map&quot;</span><span class="p">,</span>
</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="s2">&quot;SimpleState&quot;</span><span class="p">,</span>
</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="s2">&quot;State&quot;</span><span class="p">,</span>
</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="s2">&quot;Merge&quot;</span><span class="p">,</span>
</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="s2">&quot;MergeState&quot;</span><span class="p">,</span>
</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="s2">&quot;ForEach&quot;</span><span class="p">,</span>
</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="s2">&quot;Distinct&quot;</span><span class="p">,</span>
</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="s2">&quot;OrDefault&quot;</span><span class="p">,</span>
</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="s2">&quot;OrNull&quot;</span><span class="p">,</span>
</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="s2">&quot;Resample&quot;</span><span class="p">,</span>
</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="s2">&quot;ArgMin&quot;</span><span class="p">,</span>
</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="s2">&quot;ArgMax&quot;</span><span class="p">,</span>
</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="p">]</span>
</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a>
</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span>
</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span>
</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span>
</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span>
</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="p">}</span>
</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a>
</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="n">RESERVED_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span>
</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a>
</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span>
</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="p">}</span>
</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a>
</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="n">AGG_FUNC_MAPPING</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="k">lambda</span> <span class="n">functions</span><span class="p">,</span> <span class="n">suffixes</span><span class="p">:</span> <span class="p">{</span>
</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">f</span><span class="si">}{</span><span class="n">sfx</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">sfx</span><span class="p">)</span> <span class="k">for</span> <span class="n">sfx</span> <span class="ow">in</span> <span class="p">(</span><span class="n">suffixes</span> <span class="o">+</span> <span class="p">[</span><span class="s2">&quot;&quot;</span><span class="p">])</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">functions</span>
</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="p">}</span>
</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="p">)(</span><span class="n">AGG_FUNCTIONS</span><span class="p">,</span> <span class="n">AGG_FUNCTIONS_SUFFIXES</span><span class="p">)</span>
</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a>
</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span><span class="p">,</span> <span class="s2">&quot;TUPLE&quot;</span><span class="p">}</span>
</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a>
</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="s2">&quot;ARRAYJOIN&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()),</span>
</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="s2">&quot;QUANTILE&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_quantile</span><span class="p">(),</span>
</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="s2">&quot;MEDIAN&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_quantile</span><span class="p">(),</span>
</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="s2">&quot;COLUMNS&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_columns</span><span class="p">(),</span>
</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="p">}</span>
</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a>
</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;MATCH&quot;</span><span class="p">)</span>
</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a>
</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;DYNAMIC&quot;</span><span class="p">)</span>
</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a>
</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;ANY&quot;</span><span class="p">)</span>
</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a>
</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">NO_PAREN_FUNCTIONS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">)</span>
</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a>
</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_global_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span>
</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="p">}</span>
</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a>
</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="c1"># The PLACEHOLDER entry is popped because 1) it doesn&#39;t affect Clickhouse (it corresponds to</span>
</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="c1"># the postgres-specific JSONBContains parser) and 2) it makes parsing the ternary op simpler.</span>
</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">)</span>
</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a>
</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">,</span>
</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span>
</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span>
</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="p">}</span>
</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a>
</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span>
</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span>
</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span>
</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span>
</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span>
</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="p">}</span>
</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a>
</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="n">ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span>
</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span>
</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="p">}</span>
</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a>
</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a>
</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">,</span>
</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span>
</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="s2">&quot;settings&quot;</span><span class="p">,</span>
</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">),</span>
</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="p">),</span>
</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;format&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span>
</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="p">}</span>
</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a>
</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">,</span>
</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_constraint</span><span class="p">(),</span>
</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="s2">&quot;CODEC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span>
</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="p">}</span>
</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a>
</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="n">ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ALTER_PARSERS</span><span class="p">,</span>
</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="s2">&quot;REPLACE&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_replace</span><span class="p">(),</span>
</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="p">}</span>
</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a>
</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">,</span>
</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">,</span>
</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="p">}</span>
</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a>
</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">,</span>
</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_parameter</span><span class="p">(),</span>
</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="p">}</span>
</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a>
</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/create/function</span>
</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_user_defined_function_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">()</span>
</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a>
</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_types</span><span class="p">(</span>
</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span>
</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span>
</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="p">)</span>
</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="ow">and</span> <span class="n">dtype</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="c1"># Mark every type as non-nullable which is ClickHouse&#39;s default, unless it&#39;s</span>
</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="c1"># already marked as nullable. This marker helps us transpile types from other</span>
</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="c1"># dialects to ClickHouse, so that we can e.g. produce `CAST(x AS Nullable(String))`</span>
</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="c1"># from `CAST(x AS TEXT)`. If there is a `NULL` value in `x`, the former would</span>
</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="c1"># fail in ClickHouse without the `Nullable` type constructor.</span>
</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="n">dtype</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a>
</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="k">return</span> <span class="n">dtype</span>
</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a>
</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Extract</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">:</span>
</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span>
</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">()</span>
</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a>
</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="c1"># We return Anonymous here because extract and regexpExtract have different semantics,</span>
</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="c1"># so parsing extract(foo, bar) into RegexpExtract can potentially break queries. E.g.,</span>
</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="c1"># `extract(&#39;foobar&#39;, &#39;b&#39;)` works, but ClickHouse crashes for `regexpExtract(&#39;foobar&#39;, &#39;b&#39;)`.</span>
</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="c1">#</span>
</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="c1"># TODO: can we somehow convert the former into an equivalent `regexpExtract` call?</span>
</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">&quot;extract&quot;</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()]</span>
</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="p">)</span>
</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a>
</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span>
</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a>
</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">):</span>
</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span>
</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span>
</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="n">true</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="n">false</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="p">)</span>
</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a>
</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a>
</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_query_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a><span class="sd"> Parse a placeholder expression like SELECT {abc: UInt32} or FROM {table: Identifier}</span>
</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a><span class="sd"> https://clickhouse.com/docs/en/sql-reference/syntax#defining-and-using-query-parameters</span>
</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a>
</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span>
</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;IDENTIFIER&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">&quot;Identifier&quot;</span>
</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="p">)</span>
</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a>
</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span>
</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">):</span>
</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;Expecting }&quot;</span><span class="p">)</span>
</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a>
</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">quoted</span><span class="p">:</span>
</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a>
</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span>
</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a>
</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_bracket</span><span class="p">(</span>
</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="n">l_brace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a>
</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="k">if</span> <span class="n">l_brace</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bracket</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">):</span>
</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="n">varmap</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">(</span><span class="n">keys</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(),</span> <span class="n">values</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">())</span>
</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">bracket</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">):</span>
</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="k">break</span>
</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a>
</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="n">varmap</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;keys&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="n">varmap</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;values&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a>
</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="k">return</span> <span class="n">varmap</span>
</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a>
</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="k">return</span> <span class="n">bracket</span>
</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a>
</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">is_global</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span>
</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">,</span> <span class="n">is_global</span><span class="p">)</span>
</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a>
</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_global_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span>
</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="n">is_negated</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span>
</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">is_global</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_negated</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a>
</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_table</span><span class="p">(</span>
</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="n">joins</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="n">is_db_reference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="n">parse_partition</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span>
</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span>
</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="n">joins</span><span class="o">=</span><span class="n">joins</span><span class="p">,</span>
</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span><span class="p">,</span>
</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="n">parse_bracket</span><span class="o">=</span><span class="n">parse_bracket</span><span class="p">,</span>
</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_db_reference</span><span class="p">,</span>
</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="p">)</span>
</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a>
</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="n">inner</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a>
</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">inner</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">)</span> <span class="ow">and</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="s2">&quot;generate_series&quot;</span><span class="p">)])</span>
</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a>
</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">):</span>
</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Final</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a>
</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a>
</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span>
</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(</span><span class="n">haystack_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a>
</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/with/</span>
</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]:</span>
</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="c1"># WITH &lt;identifier&gt; AS &lt;subquery expression&gt;</span>
</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="n">cte</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_try_parse</span><span class="p">(</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_cte</span><span class="p">)</span>
</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a>
</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">cte</span><span class="p">:</span>
</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="c1"># WITH &lt;expression&gt; AS &lt;identifier&gt;</span>
</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span>
</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span>
</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="n">scalar</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="p">)</span>
</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a>
</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="k">return</span> <span class="n">cte</span>
</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a>
</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_join_parts</span><span class="p">(</span>
</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]]:</span>
</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="n">kind_pre</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a>
</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="k">if</span> <span class="n">kind_pre</span><span class="p">:</span>
</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">side</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="k">return</span> <span class="n">is_global</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span>
</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a>
</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="k">return</span> <span class="p">(</span>
</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="n">is_global</span><span class="p">,</span>
</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span>
</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span>
</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="p">)</span>
</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a>
</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_join</span><span class="p">(</span>
</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span>
</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="n">join</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(</span><span class="n">skip_join_token</span><span class="o">=</span><span class="n">skip_join_token</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="k">if</span> <span class="n">join</span><span class="p">:</span>
</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;global&quot;</span><span class="p">,</span> <span class="n">join</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;method&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a>
</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="c1"># tbl ARRAY JOIN arr &lt;-- this should be a `Column` reference, not a `Table`</span>
</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/array-join</span>
</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;ARRAY&quot;</span><span class="p">:</span>
</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="n">join</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="n">table</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">table</span><span class="o">.</span><span class="n">to_column</span><span class="p">())</span>
</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a>
</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="k">return</span> <span class="n">join</span>
</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a>
</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_function</span><span class="p">(</span>
</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="n">functions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="n">anonymous</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span>
</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="n">functions</span><span class="o">=</span><span class="n">functions</span><span class="p">,</span>
</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">,</span>
</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="n">optional_parens</span><span class="o">=</span><span class="n">optional_parens</span><span class="p">,</span>
</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span>
</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="p">)</span>
</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a>
</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">expr</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span>
</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a>
</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="c1"># Aggregate functions can be split in 2 parts: &lt;func_name&gt;&lt;suffix&gt;</span>
</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="n">parts</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">AGG_FUNC_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">func</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="p">)</span>
</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a>
</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="k">if</span> <span class="n">parts</span><span class="p">:</span>
</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="n">anon_func</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_func_params</span><span class="p">(</span><span class="n">anon_func</span><span class="p">)</span>
</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a>
</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="s2">&quot;this&quot;</span><span class="p">:</span> <span class="n">anon_func</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="s2">&quot;expressions&quot;</span><span class="p">:</span> <span class="n">anon_func</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span>
</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="p">}</span>
</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="k">if</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedParameterizedAgg</span> <span class="k">if</span> <span class="n">params</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedAggFunc</span>
</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="p">)</span>
</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="n">exp_class</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">ParameterizedAgg</span> <span class="k">if</span> <span class="n">params</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnonymousAggFunc</span>
</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a>
</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;exp_class&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp_class</span>
</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">params</span>
</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a>
</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a>
</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">):</span>
</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="c1"># The window&#39;s func was parsed as Anonymous in base parser, fix its</span>
</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="c1"># type to be ClickHouse style CombinedAnonymousAggFunc / AnonymousAggFunc</span>
</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="k">elif</span> <span class="n">params</span><span class="p">:</span>
</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="c1"># Params have blocked super()._parse_function() from parsing the following window</span>
</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="c1"># (if that exists) as they&#39;re standing between the function call and the window spec</span>
</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">func</span>
</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a>
</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="k">return</span> <span class="n">expr</span>
</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a>
</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_func_params</span><span class="p">(</span>
</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span>
</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a>
</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span>
</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="k">return</span> <span class="n">params</span>
</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a>
</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a>
</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_quantile</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">:</span>
</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">()</span>
</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_func_params</span><span class="p">()</span>
</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">params</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">quantile</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">quantile</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">0.5</span><span class="p">))</span>
</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a>
</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(</span><span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a>
</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_primary_key</span><span class="p">(</span>
</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">wrapped_optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">in_props</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">:</span>
</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(</span>
</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="n">wrapped_optional</span><span class="o">=</span><span class="n">wrapped_optional</span> <span class="ow">or</span> <span class="n">in_props</span><span class="p">,</span> <span class="n">in_props</span><span class="o">=</span><span class="n">in_props</span>
</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="p">)</span>
</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a>
</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_on_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;CLUSTER&quot;</span><span class="p">):</span>
</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span>
</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a>
</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_index_constraint</span><span class="p">(</span>
</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">:</span>
</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="c1"># INDEX name1 expr TYPE type1(args) GRANULARITY value</span>
</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span>
</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a>
</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;TYPE&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span>
</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span>
</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="p">)</span>
</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a>
</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;GRANULARITY&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span>
</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a>
</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">,</span>
</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span>
</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span>
</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="n">index_type</span><span class="o">=</span><span class="n">index_type</span><span class="p">,</span>
</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="n">granularity</span><span class="o">=</span><span class="n">granularity</span><span class="p">,</span>
</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="p">)</span>
</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a>
</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">]:</span>
</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#how-to-set-partition-expression</span>
</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span>
</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a>
</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;ID&quot;</span><span class="p">):</span>
</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="c1"># Corresponds to the PARTITION ID &lt;string_value&gt; syntax</span>
</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PartitionId</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span>
</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="p">]</span>
</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span>
</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a>
</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span>
</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a>
</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_alter_table_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">()</span>
</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a>
</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span>
</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a>
</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReplacePartition</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span>
</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="p">)</span>
</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a>
</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_projection_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">]:</span>
</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;PROJECTION&quot;</span><span class="p">):</span>
</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a>
</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">,</span>
</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span>
</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span>
</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="p">)</span>
</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a>
</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_projection_def</span><span class="p">()</span>
</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a>
</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_alias</span><span class="p">(</span>
</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="c1"># In clickhouse &quot;SELECT &lt;expr&gt; APPLY(...)&quot; is a query modifier,</span>
</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="c1"># so &quot;APPLY&quot; shouldn&#39;t be parsed as &lt;expr&gt;&#39;s alias. However, &quot;SELECT &lt;expr&gt; apply&quot; is a valid alias</span>
</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a>
</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">explicit</span><span class="o">=</span><span class="n">explicit</span><span class="p">)</span>
</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a>
</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span>
</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a>
</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="c1"># Clickhouse allows &quot;SELECT &lt;expr&gt; [APPLY(func)] [...]]&quot; modifier</span>
</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Apply</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span>
</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a>
</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a>
</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Columns</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">())</span>
</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a>
</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;)&quot;</span><span class="p">,</span> <span class="s2">&quot;APPLY&quot;</span><span class="p">,</span> <span class="s2">&quot;(&quot;</span><span class="p">):</span>
</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span>
</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Apply</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a>
</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">]:</span>
</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(</span><span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">)</span>
</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a>
</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="c1"># In Clickhouse &quot;SELECT * FROM VALUES (1, 2, 3)&quot; generates a table with a single column, in contrast</span>
</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="c1"># to other dialects. For this case, we canonicalize the values into a tuple-of-tuples AST if it&#39;s not already one.</span>
</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="c1"># In INSERT INTO statements the same clause actually references multiple columns (opposite semantics),</span>
</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="c1"># but the final result is not altered by the extra parentheses.</span>
</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="c1"># Note: Clickhouse allows VALUES([structure], value, ...) so the branch checks for the last expression</span>
</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">if</span> <span class="n">values</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">):</span>
</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="n">value</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="s2">&quot;expressions&quot;</span><span class="p">,</span>
</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expr</span><span class="p">])</span> <span class="k">for</span> <span class="n">expr</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">],</span>
</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="p">)</span>
</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a>
</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="k">return</span> <span class="n">value</span>
</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a>
</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;(&quot;</span><span class="p">,</span> <span class="s2">&quot;)&quot;</span><span class="p">)</span>
</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="n">TABLESAMPLE_REQUIRES_PARENS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="n">TABLESAMPLE_KEYWORDS</span> <span class="o">=</span> <span class="s2">&quot;SAMPLE&quot;</span>
</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="n">LAST_DAY_SUPPORTS_DATE_PART</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="n">SUPPORTS_TO_NUMBER</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="n">GROUPINGS_SEP</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="n">SET_OP_MODIFIERS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="n">ARRAY_SIZE_NAME</span> <span class="o">=</span> <span class="s2">&quot;LENGTH&quot;</span>
</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a>
</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="n">STRING_TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="p">}</span>
</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a>
</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="p">}</span>
</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a>
</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="o">**</span><span class="n">STRING_TYPE_MAPPING</span><span class="p">,</span>
</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">:</span> <span class="s2">&quot;Array&quot;</span><span class="p">,</span>
</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">&quot;Bool&quot;</span><span class="p">,</span>
</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">&quot;Int64&quot;</span><span class="p">,</span>
</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE32</span><span class="p">:</span> <span class="s2">&quot;Date32&quot;</span><span class="p">,</span>
</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME2</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLDATETIME</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">:</span> <span class="s2">&quot;DateTime64&quot;</span><span class="p">,</span>
</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">&quot;Decimal&quot;</span><span class="p">,</span>
</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL32</span><span class="p">:</span> <span class="s2">&quot;Decimal32&quot;</span><span class="p">,</span>
</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL64</span><span class="p">:</span> <span class="s2">&quot;Decimal64&quot;</span><span class="p">,</span>
</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL128</span><span class="p">:</span> <span class="s2">&quot;Decimal128&quot;</span><span class="p">,</span>
</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL256</span><span class="p">:</span> <span class="s2">&quot;Decimal256&quot;</span><span class="p">,</span>
</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;Float64&quot;</span><span class="p">,</span>
</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM</span><span class="p">:</span> <span class="s2">&quot;Enum&quot;</span><span class="p">,</span>
</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">:</span> <span class="s2">&quot;Enum8&quot;</span><span class="p">,</span>
</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">:</span> <span class="s2">&quot;Enum16&quot;</span><span class="p">,</span>
</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">:</span> <span class="s2">&quot;FixedString&quot;</span><span class="p">,</span>
</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;Float32&quot;</span><span class="p">,</span>
</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">:</span> <span class="s2">&quot;Int32&quot;</span><span class="p">,</span>
</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">:</span> <span class="s2">&quot;Int32&quot;</span><span class="p">,</span>
</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT128</span><span class="p">:</span> <span class="s2">&quot;Int128&quot;</span><span class="p">,</span>
</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT256</span><span class="p">:</span> <span class="s2">&quot;Int256&quot;</span><span class="p">,</span>
</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">:</span> <span class="s2">&quot;LowCardinality&quot;</span><span class="p">,</span>
</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">:</span> <span class="s2">&quot;Map&quot;</span><span class="p">,</span>
</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NESTED</span><span class="p">:</span> <span class="s2">&quot;Nested&quot;</span><span class="p">,</span>
</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">&quot;Int16&quot;</span><span class="p">,</span>
</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">:</span> <span class="s2">&quot;Tuple&quot;</span><span class="p">,</span>
</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">&quot;Int8&quot;</span><span class="p">,</span>
</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">:</span> <span class="s2">&quot;UInt64&quot;</span><span class="p">,</span>
</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UInt32&quot;</span><span class="p">,</span>
</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT128</span><span class="p">:</span> <span class="s2">&quot;UInt128&quot;</span><span class="p">,</span>
</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT256</span><span class="p">:</span> <span class="s2">&quot;UInt256&quot;</span><span class="p">,</span>
</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">:</span> <span class="s2">&quot;UInt16&quot;</span><span class="p">,</span>
</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">:</span> <span class="s2">&quot;UInt8&quot;</span><span class="p">,</span>
</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">IPV4</span><span class="p">:</span> <span class="s2">&quot;IPv4&quot;</span><span class="p">,</span>
</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">IPV6</span><span class="p">:</span> <span class="s2">&quot;IPv6&quot;</span><span class="p">,</span>
</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POINT</span><span class="p">:</span> <span class="s2">&quot;Point&quot;</span><span class="p">,</span>
</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">RING</span><span class="p">:</span> <span class="s2">&quot;Ring&quot;</span><span class="p">,</span>
</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">:</span> <span class="s2">&quot;LineString&quot;</span><span class="p">,</span>
</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">:</span> <span class="s2">&quot;MultiLineString&quot;</span><span class="p">,</span>
</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">:</span> <span class="s2">&quot;Polygon&quot;</span><span class="p">,</span>
</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">:</span> <span class="s2">&quot;MultiPolygon&quot;</span><span class="p">,</span>
</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">:</span> <span class="s2">&quot;AggregateFunction&quot;</span><span class="p">,</span>
</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">:</span> <span class="s2">&quot;SimpleAggregateFunction&quot;</span><span class="p">,</span>
</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DYNAMIC</span><span class="p">:</span> <span class="s2">&quot;Dynamic&quot;</span><span class="p">,</span>
</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="p">}</span>
</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a>
</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;any&quot;</span><span class="p">),</span>
</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;uniq&quot;</span><span class="p">),</span>
</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arrayConcat&quot;</span><span class="p">),</span>
</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;arrayFilter&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span>
</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arraySum&quot;</span><span class="p">),</span>
</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;argMax&quot;</span><span class="p">),</span>
</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;argMin&quot;</span><span class="p">),</span>
</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span>
</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CastToStrType</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CAST&quot;</span><span class="p">),</span>
</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;countIf&quot;</span><span class="p">),</span>
</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CODEC(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s1">&#39;this&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="s1">&#39;MATERIALIZED&#39;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;persisted&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">&#39;ALIAS&#39;</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">),</span>
</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">),</span>
</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;toDate&quot;</span><span class="p">),</span>
</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_SUB&quot;</span><span class="p">),</span>
</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arrayJoin&quot;</span><span class="p">),</span>
</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Final</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> FINAL&quot;</span><span class="p">,</span>
</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;isNaN&quot;</span><span class="p">),</span>
</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONCast</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">.:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;to&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="s2">&quot;JSONExtractString&quot;</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="s2">&quot;JSONExtractString&quot;</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span>
</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">:</span> <span class="n">length_or_char_length_sql</span><span class="p">,</span>
</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span>
</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Median</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;median&quot;</span><span class="p">),</span>
</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Nullif</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;nullIf&quot;</span><span class="p">),</span>
</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span>
</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">:</span> <span class="n">_quantile_sql</span><span class="p">,</span>
</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">),</span>
</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;randCanonical&quot;</span><span class="p">),</span>
</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StartsWith</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;startsWith&quot;</span><span class="p">),</span>
</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">strposition_sql</span><span class="p">(</span>
</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="n">e</span><span class="p">,</span>
</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="n">func_name</span><span class="o">=</span><span class="s2">&quot;POSITION&quot;</span><span class="p">,</span>
</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="n">supports_position</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="n">use_ansi_position</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="p">),</span>
</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="s2">&quot;formatDateTime&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;zone&quot;</span><span class="p">)</span>
</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="p">),</span>
</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">_timestrtotime_sql</span><span class="p">,</span>
</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;TIMESTAMP_ADD&quot;</span><span class="p">),</span>
</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;TIMESTAMP_SUB&quot;</span><span class="p">),</span>
</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span>
</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;xor&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">),</span>
</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MD5Digest</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MD5&quot;</span><span class="p">),</span>
</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MD5</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;LOWER&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;HEX&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;MD5&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">))),</span>
</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SHA</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SHA1&quot;</span><span class="p">),</span>
</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">:</span> <span class="n">sha256_sql</span><span class="p">,</span>
</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">default_trim_type</span><span class="o">=</span><span class="s2">&quot;BOTH&quot;</span><span class="p">),</span>
</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;varSamp&quot;</span><span class="p">),</span>
</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">naked_property</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Stddev</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;stddevSamp&quot;</span><span class="p">),</span>
</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Chr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CHAR&quot;</span><span class="p">),</span>
</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lag</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="s2">&quot;lagInFrame&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;offset&quot;</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">)</span>
</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="p">),</span>
</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lead</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="s2">&quot;leadInFrame&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;offset&quot;</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">)</span>
</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="p">),</span>
</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="p">:</span> <span class="n">unsupported_args</span><span class="p">(</span><span class="s2">&quot;ins_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;del_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;sub_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;max_dist&quot;</span><span class="p">)(</span>
</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;editDistance&quot;</span><span class="p">)</span>
</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="p">),</span>
</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="p">}</span>
</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a>
</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span>
</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span>
</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span>
</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span>
</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span>
</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="p">}</span>
</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a>
</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="c1"># There&#39;s no list in docs, but it can be found in Clickhouse code</span>
</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="c1"># see `ClickHouse/src/Parsers/ParserCreate*.cpp`</span>
</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="n">ON_CLUSTER_TARGETS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> <span class="s2">&quot;SCHEMA&quot;</span><span class="p">,</span> <span class="c1"># Transpiled CREATE SCHEMA may have OnCluster property set</span>
</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="s2">&quot;DATABASE&quot;</span><span class="p">,</span>
</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="s2">&quot;TABLE&quot;</span><span class="p">,</span>
</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="s2">&quot;VIEW&quot;</span><span class="p">,</span>
</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="s2">&quot;DICTIONARY&quot;</span><span class="p">,</span>
</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">,</span>
</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> <span class="s2">&quot;FUNCTION&quot;</span><span class="p">,</span>
</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="s2">&quot;NAMED COLLECTION&quot;</span><span class="p">,</span>
</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> <span class="p">}</span>
</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a>
</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/data-types/nullable</span>
</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="n">NON_NULLABLE_TYPES</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span>
</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span>
</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POINT</span><span class="p">,</span>
</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">RING</span><span class="p">,</span>
</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">,</span>
</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">,</span>
</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">,</span>
</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">,</span>
</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="p">}</span>
</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a>
</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">strtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="n">strtodate_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a>
</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span>
</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> <span class="c1"># StrToDate returns DATEs in other dialects (eg. postgres), so</span>
</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="c1"># this branch aims to improve the transpilation to clickhouse</span>
</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;DATE&quot;</span><span class="p">))</span>
</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a>
</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="k">return</span> <span class="n">strtodate_sql</span>
</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a>
</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a>
</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="s2">&quot;datetime&quot;</span><span class="p">):</span>
</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a>
</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="n">safe_prefix</span><span class="p">)</span>
</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a>
</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span>
</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dtype</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="c1"># Casting x into Nullable(T) appears to behave similarly to TRY_CAST(x AS T)</span>
</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="n">dtype</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a>
</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a>
</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_jsonpathsubscript_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_int</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a>
</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a>
</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_any_to_has</span><span class="p">(</span>
</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span>
</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="n">default</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">],</span> <span class="nb">str</span><span class="p">],</span>
</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span>
</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">left</span>
</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">right</span>
</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span>
</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">right</span>
</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">left</span>
</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="k">return</span> <span class="n">default</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a>
</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="k">return</span> <span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;has&quot;</span><span class="p">,</span> <span class="n">arr</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">(),</span> <span class="n">this</span><span class="p">)</span>
</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a>
</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">eq_sql</span><span class="p">)</span>
</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a>
</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">neq_sql</span><span class="p">,</span> <span class="s2">&quot;NOT &quot;</span><span class="p">)</span>
</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a>
</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">regexpilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="c1"># Manually add a flag to make the search case-insensitive</span>
</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="n">regex</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;CONCAT&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;(?i)&#39;&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">regex</span><span class="p">)</span>
</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a>
</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> <span class="c1"># String is the standard ClickHouse type, every other variant is just an alias.</span>
</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="c1"># Additionally, any supplied length parameter will be ignored.</span>
</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="c1">#</span>
</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/data-types/string</span>
</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_TYPE_MAPPING</span><span class="p">:</span>
</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="s2">&quot;String&quot;</span>
</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a>
</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="c1"># This section changes the type to `Nullable(...)` if the following conditions hold:</span>
</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="c1"># - It&#39;s marked as nullable - this ensures we won&#39;t wrap ClickHouse types with `Nullable`</span>
</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="c1"># and change their semantics</span>
</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="c1"># - It&#39;s not the key type of a `Map`. This is because ClickHouse enforces the following</span>
</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="c1"># constraint: &quot;Type of Map key must be a type, that can be represented by integer or</span>
</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="c1"># String or FixedString (possibly LowCardinality) or UUID or IPv6&quot;</span>
</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="c1"># - It&#39;s not a composite type, e.g. `Nullable(Array(...))` is not a valid type</span>
</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="n">nullable</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">)</span>
</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="k">if</span> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">True</span> <span class="ow">or</span> <span class="p">(</span>
</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">None</span>
</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span>
</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span>
</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="ow">and</span> <span class="n">parent</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">index</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="p">)</span>
</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="p">):</span>
</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Nullable(</span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">)&quot;</span>
</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a>
</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="k">return</span> <span class="n">dtype</span>
</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a>
</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scalar&quot;</span><span class="p">):</span>
</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a>
</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cte_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a>
</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">after_limit_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">after_limit_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span>
</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> <span class="p">(</span>
</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;SETTINGS &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;settings&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;settings&quot;</span><span class="p">)</span>
</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="p">),</span>
</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="p">(</span>
</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;FORMAT &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="p">),</span>
</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="p">]</span>
</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a>
</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">{{</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;kind&#39;</span><span class="p">)</span><span class="si">}</span><span class="se">}}</span><span class="s2">&quot;</span>
</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a>
</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">oncluster_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ON CLUSTER </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a>
</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">createable_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> <span class="n">locations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ON_CLUSTER_TARGETS</span> <span class="ow">and</span> <span class="n">locations</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span>
</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> <span class="p">):</span>
</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span><span class="p">,</span>
</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="s2">&quot;this&quot;</span><span class="p">,</span>
</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="p">)</span>
</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">locations</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]]</span>
</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> <span class="p">)</span>
</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema_columns_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this_schema</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a>
</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this_name</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_properties</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a>
</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">createable_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">locations</span><span class="p">)</span>
</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a>
</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">create_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="c1"># The comment property comes last in CTAS statements, i.e. after the query</span>
</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="n">query</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span>
</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span>
</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="k">if</span> <span class="n">comment_prop</span><span class="p">:</span>
</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="n">comment_prop</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="n">query</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">query</span><span class="p">))</span>
</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a>
</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="n">create_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">create_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a>
</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comment_prop</span><span class="p">)</span>
</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">comment_sql</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a>
</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">create_sql</span><span class="si">}{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a>
</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">prewhere_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">))</span>
</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">&#39;PREWHERE&#39;</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a>
</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">indexcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">)</span>
</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">expr</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expr</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;index_type&quot;</span><span class="p">)</span>
</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; TYPE </span><span class="si">{</span><span class="n">index_type</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">index_type</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;granularity&quot;</span><span class="p">)</span>
</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; GRANULARITY </span><span class="si">{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">granularity</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a>
</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;INDEX</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expr</span><span class="si">}{</span><span class="n">index_type</span><span class="si">}{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a>
</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PARTITION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a>
</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partitionid_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionId</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ID </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a>
</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">replacepartition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ReplacePartition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="k">return</span> <span class="p">(</span>
</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="sa">f</span><span class="s2">&quot;REPLACE </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;source&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> <span class="p">)</span>
</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a>
</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">projectiondef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PROJECTION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a>
</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">is_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a>
</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">):</span>
</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="c1"># value IS NOT NULL -&gt; NOT (value IS NULL)</span>
</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">is_sql</span><span class="p">)</span>
</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a>
</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> <span class="k">return</span> <span class="n">is_sql</span>
</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a>
</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">in_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a>
</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="n">in_sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;GLOBAL IN&quot;</span><span class="p">,</span> <span class="s2">&quot;GLOBAL NOT IN&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a>
</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="k">return</span> <span class="n">in_sql</span>
</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a>
</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="c1"># let `GLOBAL IN` child interpose `NOT`</span>
</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a>
</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">not_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a>
</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">values_as_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="c1"># If the VALUES clause contains tuples of expressions, we need to treat it</span>
</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a> <span class="c1"># as a table since Clickhouse will automatically alias it as such.</span>
</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a>
</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="nb">any</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">)</span>
</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a>
</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">values_as_table</span><span class="o">=</span><span class="n">values_as_table</span><span class="p">)</span>
</span></pre></div>
</section>
<section id="DATEΤΙΜΕ_DELTA">
<div class="attr variable">
<span class="name">DATEΤΙΜΕ_DELTA</span> =
<input id="DATEΤΙΜΕ_DELTA-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="DATEΤΙΜΕ_DELTA-view-value"></label><span class="default_value">typing.Union[<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>, <a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>, <a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>, <a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>, <a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>]</span>
</div>
<a class="headerlink" href="#DATEΤΙΜΕ_DELTA"></a>
</section>
<section id="ClickHouse">
<input id="ClickHouse-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">ClickHouse</span><wbr>(<span class="base">sqlglot.dialects.dialect.Dialect</span>):
<label class="view-source-button" for="ClickHouse-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse-184"><a href="#ClickHouse-184"><span class="linenos"> 184</span></a><span class="k">class</span><span class="w"> </span><span class="nc">ClickHouse</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="ClickHouse-185"><a href="#ClickHouse-185"><span class="linenos"> 185</span></a> <span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-186"><a href="#ClickHouse-186"><span class="linenos"> 186</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_last&quot;</span>
</span><span id="ClickHouse-187"><a href="#ClickHouse-187"><span class="linenos"> 187</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-188"><a href="#ClickHouse-188"><span class="linenos"> 188</span></a> <span class="n">SAFE_DIVISION</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-189"><a href="#ClickHouse-189"><span class="linenos"> 189</span></a> <span class="n">LOG_BASE_FIRST</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse-190"><a href="#ClickHouse-190"><span class="linenos"> 190</span></a> <span class="n">FORCE_EARLY_ALIAS_REF_EXPANSION</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-191"><a href="#ClickHouse-191"><span class="linenos"> 191</span></a> <span class="n">PRESERVE_ORIGINAL_NAMES</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-192"><a href="#ClickHouse-192"><span class="linenos"> 192</span></a> <span class="n">NUMBERS_CAN_BE_UNDERSCORE_SEPARATED</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-193"><a href="#ClickHouse-193"><span class="linenos"> 193</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-194"><a href="#ClickHouse-194"><span class="linenos"> 194</span></a> <span class="n">HEX_STRING_IS_INTEGER_TYPE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-195"><a href="#ClickHouse-195"><span class="linenos"> 195</span></a>
</span><span id="ClickHouse-196"><a href="#ClickHouse-196"><span class="linenos"> 196</span></a> <span class="c1"># https://github.com/ClickHouse/ClickHouse/issues/33935#issue-1112165779</span>
</span><span id="ClickHouse-197"><a href="#ClickHouse-197"><span class="linenos"> 197</span></a> <span class="n">NORMALIZATION_STRATEGY</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span>
</span><span id="ClickHouse-198"><a href="#ClickHouse-198"><span class="linenos"> 198</span></a>
</span><span id="ClickHouse-199"><a href="#ClickHouse-199"><span class="linenos"> 199</span></a> <span class="n">UNESCAPED_SEQUENCES</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-200"><a href="#ClickHouse-200"><span class="linenos"> 200</span></a> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">0&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="se">\0</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-201"><a href="#ClickHouse-201"><span class="linenos"> 201</span></a> <span class="p">}</span>
</span><span id="ClickHouse-202"><a href="#ClickHouse-202"><span class="linenos"> 202</span></a>
</span><span id="ClickHouse-203"><a href="#ClickHouse-203"><span class="linenos"> 203</span></a> <span class="n">CREATABLE_KIND_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;DATABASE&quot;</span><span class="p">:</span> <span class="s2">&quot;SCHEMA&quot;</span><span class="p">}</span>
</span><span id="ClickHouse-204"><a href="#ClickHouse-204"><span class="linenos"> 204</span></a>
</span><span id="ClickHouse-205"><a href="#ClickHouse-205"><span class="linenos"> 205</span></a> <span class="n">SET_OP_DISTINCT_BY_DEFAULT</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-206"><a href="#ClickHouse-206"><span class="linenos"> 206</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-207"><a href="#ClickHouse-207"><span class="linenos"> 207</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-208"><a href="#ClickHouse-208"><span class="linenos"> 208</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="ClickHouse-209"><a href="#ClickHouse-209"><span class="linenos"> 209</span></a> <span class="p">}</span>
</span><span id="ClickHouse-210"><a href="#ClickHouse-210"><span class="linenos"> 210</span></a>
</span><span id="ClickHouse-211"><a href="#ClickHouse-211"><span class="linenos"> 211</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">generate_values_aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]:</span>
</span><span id="ClickHouse-212"><a href="#ClickHouse-212"><span class="linenos"> 212</span></a> <span class="c1"># Clickhouse allows VALUES to have an embedded structure e.g:</span>
</span><span id="ClickHouse-213"><a href="#ClickHouse-213"><span class="linenos"> 213</span></a> <span class="c1"># VALUES(&#39;person String, place String&#39;, (&#39;Noah&#39;, &#39;Paris&#39;), ...)</span>
</span><span id="ClickHouse-214"><a href="#ClickHouse-214"><span class="linenos"> 214</span></a> <span class="c1"># In this case, we don&#39;t want to qualify the columns</span>
</span><span id="ClickHouse-215"><a href="#ClickHouse-215"><span class="linenos"> 215</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="ClickHouse-216"><a href="#ClickHouse-216"><span class="linenos"> 216</span></a>
</span><span id="ClickHouse-217"><a href="#ClickHouse-217"><span class="linenos"> 217</span></a> <span class="n">structure</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse-218"><a href="#ClickHouse-218"><span class="linenos"> 218</span></a> <span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="ClickHouse-219"><a href="#ClickHouse-219"><span class="linenos"> 219</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">))</span>
</span><span id="ClickHouse-220"><a href="#ClickHouse-220"><span class="linenos"> 220</span></a> <span class="k">else</span> <span class="kc">None</span>
</span><span id="ClickHouse-221"><a href="#ClickHouse-221"><span class="linenos"> 221</span></a> <span class="p">)</span>
</span><span id="ClickHouse-222"><a href="#ClickHouse-222"><span class="linenos"> 222</span></a> <span class="k">if</span> <span class="n">structure</span><span class="p">:</span>
</span><span id="ClickHouse-223"><a href="#ClickHouse-223"><span class="linenos"> 223</span></a> <span class="c1"># Split each column definition into the column name e.g:</span>
</span><span id="ClickHouse-224"><a href="#ClickHouse-224"><span class="linenos"> 224</span></a> <span class="c1"># &#39;person String, place String&#39; -&gt; [&#39;person&#39;, &#39;place&#39;]</span>
</span><span id="ClickHouse-225"><a href="#ClickHouse-225"><span class="linenos"> 225</span></a> <span class="n">structure_coldefs</span> <span class="o">=</span> <span class="p">[</span><span class="n">coldef</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">coldef</span> <span class="ow">in</span> <span class="n">structure</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse-226"><a href="#ClickHouse-226"><span class="linenos"> 226</span></a> <span class="n">column_aliases</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse-227"><a href="#ClickHouse-227"><span class="linenos"> 227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">coldef</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="k">for</span> <span class="n">coldef</span> <span class="ow">in</span> <span class="n">structure_coldefs</span>
</span><span id="ClickHouse-228"><a href="#ClickHouse-228"><span class="linenos"> 228</span></a> <span class="p">]</span>
</span><span id="ClickHouse-229"><a href="#ClickHouse-229"><span class="linenos"> 229</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-230"><a href="#ClickHouse-230"><span class="linenos"> 230</span></a> <span class="c1"># Default column aliases in CH are &quot;c1&quot;, &quot;c2&quot;, etc.</span>
</span><span id="ClickHouse-231"><a href="#ClickHouse-231"><span class="linenos"> 231</span></a> <span class="n">column_aliases</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse-232"><a href="#ClickHouse-232"><span class="linenos"> 232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;c</span><span class="si">{</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span>
</span><span id="ClickHouse-233"><a href="#ClickHouse-233"><span class="linenos"> 233</span></a> <span class="p">]</span>
</span><span id="ClickHouse-234"><a href="#ClickHouse-234"><span class="linenos"> 234</span></a>
</span><span id="ClickHouse-235"><a href="#ClickHouse-235"><span class="linenos"> 235</span></a> <span class="k">return</span> <span class="n">column_aliases</span>
</span><span id="ClickHouse-236"><a href="#ClickHouse-236"><span class="linenos"> 236</span></a>
</span><span id="ClickHouse-237"><a href="#ClickHouse-237"><span class="linenos"> 237</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
</span><span id="ClickHouse-238"><a href="#ClickHouse-238"><span class="linenos"> 238</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="s2">&quot;#!&quot;</span><span class="p">,</span> <span class="p">(</span><span class="s2">&quot;/*&quot;</span><span class="p">,</span> <span class="s2">&quot;*/&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse-239"><a href="#ClickHouse-239"><span class="linenos"> 239</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="ClickHouse-240"><a href="#ClickHouse-240"><span class="linenos"> 240</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="ClickHouse-241"><a href="#ClickHouse-241"><span class="linenos"> 241</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="ClickHouse-242"><a href="#ClickHouse-242"><span class="linenos"> 242</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;0b&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse-243"><a href="#ClickHouse-243"><span class="linenos"> 243</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;0x&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;0X&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse-244"><a href="#ClickHouse-244"><span class="linenos"> 244</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;$&quot;</span><span class="p">]</span>
</span><span id="ClickHouse-245"><a href="#ClickHouse-245"><span class="linenos"> 245</span></a>
</span><span id="ClickHouse-246"><a href="#ClickHouse-246"><span class="linenos"> 246</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-247"><a href="#ClickHouse-247"><span class="linenos"> 247</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
</span><span id="ClickHouse-248"><a href="#ClickHouse-248"><span class="linenos"> 248</span></a> <span class="s2">&quot;.:&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOTCOLON</span><span class="p">,</span>
</span><span id="ClickHouse-249"><a href="#ClickHouse-249"><span class="linenos"> 249</span></a> <span class="s2">&quot;ATTACH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
</span><span id="ClickHouse-250"><a href="#ClickHouse-250"><span class="linenos"> 250</span></a> <span class="s2">&quot;DATE32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span>
</span><span id="ClickHouse-251"><a href="#ClickHouse-251"><span class="linenos"> 251</span></a> <span class="s2">&quot;DATETIME64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span>
</span><span id="ClickHouse-252"><a href="#ClickHouse-252"><span class="linenos"> 252</span></a> <span class="s2">&quot;DICTIONARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span>
</span><span id="ClickHouse-253"><a href="#ClickHouse-253"><span class="linenos"> 253</span></a> <span class="s2">&quot;DYNAMIC&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DYNAMIC</span><span class="p">,</span>
</span><span id="ClickHouse-254"><a href="#ClickHouse-254"><span class="linenos"> 254</span></a> <span class="s2">&quot;ENUM8&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">,</span>
</span><span id="ClickHouse-255"><a href="#ClickHouse-255"><span class="linenos"> 255</span></a> <span class="s2">&quot;ENUM16&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">,</span>
</span><span id="ClickHouse-256"><a href="#ClickHouse-256"><span class="linenos"> 256</span></a> <span class="s2">&quot;FINAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span>
</span><span id="ClickHouse-257"><a href="#ClickHouse-257"><span class="linenos"> 257</span></a> <span class="s2">&quot;FIXEDSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">,</span>
</span><span id="ClickHouse-258"><a href="#ClickHouse-258"><span class="linenos"> 258</span></a> <span class="s2">&quot;FLOAT32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span>
</span><span id="ClickHouse-259"><a href="#ClickHouse-259"><span class="linenos"> 259</span></a> <span class="s2">&quot;FLOAT64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span>
</span><span id="ClickHouse-260"><a href="#ClickHouse-260"><span class="linenos"> 260</span></a> <span class="s2">&quot;GLOBAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">,</span>
</span><span id="ClickHouse-261"><a href="#ClickHouse-261"><span class="linenos"> 261</span></a> <span class="s2">&quot;LOWCARDINALITY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">,</span>
</span><span id="ClickHouse-262"><a href="#ClickHouse-262"><span class="linenos"> 262</span></a> <span class="s2">&quot;MAP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span>
</span><span id="ClickHouse-263"><a href="#ClickHouse-263"><span class="linenos"> 263</span></a> <span class="s2">&quot;NESTED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NESTED</span><span class="p">,</span>
</span><span id="ClickHouse-264"><a href="#ClickHouse-264"><span class="linenos"> 264</span></a> <span class="s2">&quot;SAMPLE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span>
</span><span id="ClickHouse-265"><a href="#ClickHouse-265"><span class="linenos"> 265</span></a> <span class="s2">&quot;TUPLE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span>
</span><span id="ClickHouse-266"><a href="#ClickHouse-266"><span class="linenos"> 266</span></a> <span class="s2">&quot;UINT16&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span>
</span><span id="ClickHouse-267"><a href="#ClickHouse-267"><span class="linenos"> 267</span></a> <span class="s2">&quot;UINT32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span>
</span><span id="ClickHouse-268"><a href="#ClickHouse-268"><span class="linenos"> 268</span></a> <span class="s2">&quot;UINT64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span>
</span><span id="ClickHouse-269"><a href="#ClickHouse-269"><span class="linenos"> 269</span></a> <span class="s2">&quot;UINT8&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span>
</span><span id="ClickHouse-270"><a href="#ClickHouse-270"><span class="linenos"> 270</span></a> <span class="s2">&quot;IPV4&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV4</span><span class="p">,</span>
</span><span id="ClickHouse-271"><a href="#ClickHouse-271"><span class="linenos"> 271</span></a> <span class="s2">&quot;IPV6&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV6</span><span class="p">,</span>
</span><span id="ClickHouse-272"><a href="#ClickHouse-272"><span class="linenos"> 272</span></a> <span class="s2">&quot;POINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">POINT</span><span class="p">,</span>
</span><span id="ClickHouse-273"><a href="#ClickHouse-273"><span class="linenos"> 273</span></a> <span class="s2">&quot;RING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RING</span><span class="p">,</span>
</span><span id="ClickHouse-274"><a href="#ClickHouse-274"><span class="linenos"> 274</span></a> <span class="s2">&quot;LINESTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse-275"><a href="#ClickHouse-275"><span class="linenos"> 275</span></a> <span class="s2">&quot;MULTILINESTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse-276"><a href="#ClickHouse-276"><span class="linenos"> 276</span></a> <span class="s2">&quot;POLYGON&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">,</span>
</span><span id="ClickHouse-277"><a href="#ClickHouse-277"><span class="linenos"> 277</span></a> <span class="s2">&quot;MULTIPOLYGON&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">,</span>
</span><span id="ClickHouse-278"><a href="#ClickHouse-278"><span class="linenos"> 278</span></a> <span class="s2">&quot;AGGREGATEFUNCTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">,</span>
</span><span id="ClickHouse-279"><a href="#ClickHouse-279"><span class="linenos"> 279</span></a> <span class="s2">&quot;SIMPLEAGGREGATEFUNCTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">,</span>
</span><span id="ClickHouse-280"><a href="#ClickHouse-280"><span class="linenos"> 280</span></a> <span class="s2">&quot;SYSTEM&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
</span><span id="ClickHouse-281"><a href="#ClickHouse-281"><span class="linenos"> 281</span></a> <span class="s2">&quot;PREWHERE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">,</span>
</span><span id="ClickHouse-282"><a href="#ClickHouse-282"><span class="linenos"> 282</span></a> <span class="p">}</span>
</span><span id="ClickHouse-283"><a href="#ClickHouse-283"><span class="linenos"> 283</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;/*+&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-284"><a href="#ClickHouse-284"><span class="linenos"> 284</span></a>
</span><span id="ClickHouse-285"><a href="#ClickHouse-285"><span class="linenos"> 285</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-286"><a href="#ClickHouse-286"><span class="linenos"> 286</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
</span><span id="ClickHouse-287"><a href="#ClickHouse-287"><span class="linenos"> 287</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span>
</span><span id="ClickHouse-288"><a href="#ClickHouse-288"><span class="linenos"> 288</span></a> <span class="p">}</span>
</span><span id="ClickHouse-289"><a href="#ClickHouse-289"><span class="linenos"> 289</span></a>
</span><span id="ClickHouse-290"><a href="#ClickHouse-290"><span class="linenos"> 290</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
</span><span id="ClickHouse-291"><a href="#ClickHouse-291"><span class="linenos"> 291</span></a> <span class="c1"># Tested in ClickHouse&#39;s playground, it seems that the following two queries do the same thing</span>
</span><span id="ClickHouse-292"><a href="#ClickHouse-292"><span class="linenos"> 292</span></a> <span class="c1"># * select x from t1 union all select x from t2 limit 1;</span>
</span><span id="ClickHouse-293"><a href="#ClickHouse-293"><span class="linenos"> 293</span></a> <span class="c1"># * select x from t1 union all (select x from t2 limit 1);</span>
</span><span id="ClickHouse-294"><a href="#ClickHouse-294"><span class="linenos"> 294</span></a> <span class="n">MODIFIERS_ATTACHED_TO_SET_OP</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-295"><a href="#ClickHouse-295"><span class="linenos"> 295</span></a> <span class="n">INTERVAL_SPANS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-296"><a href="#ClickHouse-296"><span class="linenos"> 296</span></a> <span class="n">OPTIONAL_ALIAS_TOKEN_CTE</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-297"><a href="#ClickHouse-297"><span class="linenos"> 297</span></a>
</span><span id="ClickHouse-298"><a href="#ClickHouse-298"><span class="linenos"> 298</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-299"><a href="#ClickHouse-299"><span class="linenos"> 299</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
</span><span id="ClickHouse-300"><a href="#ClickHouse-300"><span class="linenos"> 300</span></a> <span class="s2">&quot;ANY&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-301"><a href="#ClickHouse-301"><span class="linenos"> 301</span></a> <span class="s2">&quot;ARRAYSUM&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-302"><a href="#ClickHouse-302"><span class="linenos"> 302</span></a> <span class="s2">&quot;COUNTIF&quot;</span><span class="p">:</span> <span class="n">_build_count_if</span><span class="p">,</span>
</span><span id="ClickHouse-303"><a href="#ClickHouse-303"><span class="linenos"> 303</span></a> <span class="s2">&quot;DATE_ADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-304"><a href="#ClickHouse-304"><span class="linenos"> 304</span></a> <span class="s2">&quot;DATEADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-305"><a href="#ClickHouse-305"><span class="linenos"> 305</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-306"><a href="#ClickHouse-306"><span class="linenos"> 306</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-307"><a href="#ClickHouse-307"><span class="linenos"> 307</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">:</span> <span class="n">_build_date_format</span><span class="p">,</span>
</span><span id="ClickHouse-308"><a href="#ClickHouse-308"><span class="linenos"> 308</span></a> <span class="s2">&quot;DATE_SUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-309"><a href="#ClickHouse-309"><span class="linenos"> 309</span></a> <span class="s2">&quot;DATESUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-310"><a href="#ClickHouse-310"><span class="linenos"> 310</span></a> <span class="s2">&quot;FORMATDATETIME&quot;</span><span class="p">:</span> <span class="n">_build_date_format</span><span class="p">,</span>
</span><span id="ClickHouse-311"><a href="#ClickHouse-311"><span class="linenos"> 311</span></a> <span class="s2">&quot;JSONEXTRACTSTRING&quot;</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span>
</span><span id="ClickHouse-312"><a href="#ClickHouse-312"><span class="linenos"> 312</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">zero_based_indexing</span><span class="o">=</span><span class="kc">False</span>
</span><span id="ClickHouse-313"><a href="#ClickHouse-313"><span class="linenos"> 313</span></a> <span class="p">),</span>
</span><span id="ClickHouse-314"><a href="#ClickHouse-314"><span class="linenos"> 314</span></a> <span class="s2">&quot;LENGTH&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">binary</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="ClickHouse-315"><a href="#ClickHouse-315"><span class="linenos"> 315</span></a> <span class="s2">&quot;MAP&quot;</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">build_var_map</span><span class="p">,</span>
</span><span id="ClickHouse-316"><a href="#ClickHouse-316"><span class="linenos"> 316</span></a> <span class="s2">&quot;MATCH&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-317"><a href="#ClickHouse-317"><span class="linenos"> 317</span></a> <span class="s2">&quot;RANDCANONICAL&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-318"><a href="#ClickHouse-318"><span class="linenos"> 318</span></a> <span class="s2">&quot;STR_TO_DATE&quot;</span><span class="p">:</span> <span class="n">_build_str_to_date</span><span class="p">,</span>
</span><span id="ClickHouse-319"><a href="#ClickHouse-319"><span class="linenos"> 319</span></a> <span class="s2">&quot;TUPLE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-320"><a href="#ClickHouse-320"><span class="linenos"> 320</span></a> <span class="s2">&quot;TIMESTAMP_SUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-321"><a href="#ClickHouse-321"><span class="linenos"> 321</span></a> <span class="s2">&quot;TIMESTAMPSUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-322"><a href="#ClickHouse-322"><span class="linenos"> 322</span></a> <span class="s2">&quot;TIMESTAMP_ADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-323"><a href="#ClickHouse-323"><span class="linenos"> 323</span></a> <span class="s2">&quot;TIMESTAMPADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse-324"><a href="#ClickHouse-324"><span class="linenos"> 324</span></a> <span class="s2">&quot;UNIQ&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-325"><a href="#ClickHouse-325"><span class="linenos"> 325</span></a> <span class="s2">&quot;XOR&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">),</span>
</span><span id="ClickHouse-326"><a href="#ClickHouse-326"><span class="linenos"> 326</span></a> <span class="s2">&quot;MD5&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MD5Digest</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-327"><a href="#ClickHouse-327"><span class="linenos"> 327</span></a> <span class="s2">&quot;SHA256&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">256</span><span class="p">)),</span>
</span><span id="ClickHouse-328"><a href="#ClickHouse-328"><span class="linenos"> 328</span></a> <span class="s2">&quot;SHA512&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">512</span><span class="p">)),</span>
</span><span id="ClickHouse-329"><a href="#ClickHouse-329"><span class="linenos"> 329</span></a> <span class="s2">&quot;EDITDISTANCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-330"><a href="#ClickHouse-330"><span class="linenos"> 330</span></a> <span class="s2">&quot;LEVENSHTEINDISTANCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse-331"><a href="#ClickHouse-331"><span class="linenos"> 331</span></a> <span class="p">}</span>
</span><span id="ClickHouse-332"><a href="#ClickHouse-332"><span class="linenos"> 332</span></a> <span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;TRANSFORM&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-333"><a href="#ClickHouse-333"><span class="linenos"> 333</span></a>
</span><span id="ClickHouse-334"><a href="#ClickHouse-334"><span class="linenos"> 334</span></a> <span class="n">AGG_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-335"><a href="#ClickHouse-335"><span class="linenos"> 335</span></a> <span class="s2">&quot;count&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-336"><a href="#ClickHouse-336"><span class="linenos"> 336</span></a> <span class="s2">&quot;min&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-337"><a href="#ClickHouse-337"><span class="linenos"> 337</span></a> <span class="s2">&quot;max&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-338"><a href="#ClickHouse-338"><span class="linenos"> 338</span></a> <span class="s2">&quot;sum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-339"><a href="#ClickHouse-339"><span class="linenos"> 339</span></a> <span class="s2">&quot;avg&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-340"><a href="#ClickHouse-340"><span class="linenos"> 340</span></a> <span class="s2">&quot;any&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-341"><a href="#ClickHouse-341"><span class="linenos"> 341</span></a> <span class="s2">&quot;stddevPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-342"><a href="#ClickHouse-342"><span class="linenos"> 342</span></a> <span class="s2">&quot;stddevSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-343"><a href="#ClickHouse-343"><span class="linenos"> 343</span></a> <span class="s2">&quot;varPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-344"><a href="#ClickHouse-344"><span class="linenos"> 344</span></a> <span class="s2">&quot;varSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-345"><a href="#ClickHouse-345"><span class="linenos"> 345</span></a> <span class="s2">&quot;corr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-346"><a href="#ClickHouse-346"><span class="linenos"> 346</span></a> <span class="s2">&quot;covarPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-347"><a href="#ClickHouse-347"><span class="linenos"> 347</span></a> <span class="s2">&quot;covarSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-348"><a href="#ClickHouse-348"><span class="linenos"> 348</span></a> <span class="s2">&quot;entropy&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-349"><a href="#ClickHouse-349"><span class="linenos"> 349</span></a> <span class="s2">&quot;exponentialMovingAverage&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-350"><a href="#ClickHouse-350"><span class="linenos"> 350</span></a> <span class="s2">&quot;intervalLengthSum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-351"><a href="#ClickHouse-351"><span class="linenos"> 351</span></a> <span class="s2">&quot;kolmogorovSmirnovTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-352"><a href="#ClickHouse-352"><span class="linenos"> 352</span></a> <span class="s2">&quot;mannWhitneyUTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-353"><a href="#ClickHouse-353"><span class="linenos"> 353</span></a> <span class="s2">&quot;median&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-354"><a href="#ClickHouse-354"><span class="linenos"> 354</span></a> <span class="s2">&quot;rankCorr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-355"><a href="#ClickHouse-355"><span class="linenos"> 355</span></a> <span class="s2">&quot;sumKahan&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-356"><a href="#ClickHouse-356"><span class="linenos"> 356</span></a> <span class="s2">&quot;studentTTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-357"><a href="#ClickHouse-357"><span class="linenos"> 357</span></a> <span class="s2">&quot;welchTTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-358"><a href="#ClickHouse-358"><span class="linenos"> 358</span></a> <span class="s2">&quot;anyHeavy&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-359"><a href="#ClickHouse-359"><span class="linenos"> 359</span></a> <span class="s2">&quot;anyLast&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-360"><a href="#ClickHouse-360"><span class="linenos"> 360</span></a> <span class="s2">&quot;boundingRatio&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-361"><a href="#ClickHouse-361"><span class="linenos"> 361</span></a> <span class="s2">&quot;first_value&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-362"><a href="#ClickHouse-362"><span class="linenos"> 362</span></a> <span class="s2">&quot;last_value&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-363"><a href="#ClickHouse-363"><span class="linenos"> 363</span></a> <span class="s2">&quot;argMin&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-364"><a href="#ClickHouse-364"><span class="linenos"> 364</span></a> <span class="s2">&quot;argMax&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-365"><a href="#ClickHouse-365"><span class="linenos"> 365</span></a> <span class="s2">&quot;avgWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-366"><a href="#ClickHouse-366"><span class="linenos"> 366</span></a> <span class="s2">&quot;topK&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-367"><a href="#ClickHouse-367"><span class="linenos"> 367</span></a> <span class="s2">&quot;topKWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-368"><a href="#ClickHouse-368"><span class="linenos"> 368</span></a> <span class="s2">&quot;deltaSum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-369"><a href="#ClickHouse-369"><span class="linenos"> 369</span></a> <span class="s2">&quot;deltaSumTimestamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-370"><a href="#ClickHouse-370"><span class="linenos"> 370</span></a> <span class="s2">&quot;groupArray&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-371"><a href="#ClickHouse-371"><span class="linenos"> 371</span></a> <span class="s2">&quot;groupArrayLast&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-372"><a href="#ClickHouse-372"><span class="linenos"> 372</span></a> <span class="s2">&quot;groupUniqArray&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-373"><a href="#ClickHouse-373"><span class="linenos"> 373</span></a> <span class="s2">&quot;groupArrayInsertAt&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-374"><a href="#ClickHouse-374"><span class="linenos"> 374</span></a> <span class="s2">&quot;groupArrayMovingAvg&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-375"><a href="#ClickHouse-375"><span class="linenos"> 375</span></a> <span class="s2">&quot;groupArrayMovingSum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-376"><a href="#ClickHouse-376"><span class="linenos"> 376</span></a> <span class="s2">&quot;groupArraySample&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-377"><a href="#ClickHouse-377"><span class="linenos"> 377</span></a> <span class="s2">&quot;groupBitAnd&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-378"><a href="#ClickHouse-378"><span class="linenos"> 378</span></a> <span class="s2">&quot;groupBitOr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-379"><a href="#ClickHouse-379"><span class="linenos"> 379</span></a> <span class="s2">&quot;groupBitXor&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-380"><a href="#ClickHouse-380"><span class="linenos"> 380</span></a> <span class="s2">&quot;groupBitmap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-381"><a href="#ClickHouse-381"><span class="linenos"> 381</span></a> <span class="s2">&quot;groupBitmapAnd&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-382"><a href="#ClickHouse-382"><span class="linenos"> 382</span></a> <span class="s2">&quot;groupBitmapOr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-383"><a href="#ClickHouse-383"><span class="linenos"> 383</span></a> <span class="s2">&quot;groupBitmapXor&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-384"><a href="#ClickHouse-384"><span class="linenos"> 384</span></a> <span class="s2">&quot;sumWithOverflow&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-385"><a href="#ClickHouse-385"><span class="linenos"> 385</span></a> <span class="s2">&quot;sumMap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-386"><a href="#ClickHouse-386"><span class="linenos"> 386</span></a> <span class="s2">&quot;minMap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-387"><a href="#ClickHouse-387"><span class="linenos"> 387</span></a> <span class="s2">&quot;maxMap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-388"><a href="#ClickHouse-388"><span class="linenos"> 388</span></a> <span class="s2">&quot;skewSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-389"><a href="#ClickHouse-389"><span class="linenos"> 389</span></a> <span class="s2">&quot;skewPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-390"><a href="#ClickHouse-390"><span class="linenos"> 390</span></a> <span class="s2">&quot;kurtSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-391"><a href="#ClickHouse-391"><span class="linenos"> 391</span></a> <span class="s2">&quot;kurtPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-392"><a href="#ClickHouse-392"><span class="linenos"> 392</span></a> <span class="s2">&quot;uniq&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-393"><a href="#ClickHouse-393"><span class="linenos"> 393</span></a> <span class="s2">&quot;uniqExact&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-394"><a href="#ClickHouse-394"><span class="linenos"> 394</span></a> <span class="s2">&quot;uniqCombined&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-395"><a href="#ClickHouse-395"><span class="linenos"> 395</span></a> <span class="s2">&quot;uniqCombined64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-396"><a href="#ClickHouse-396"><span class="linenos"> 396</span></a> <span class="s2">&quot;uniqHLL12&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-397"><a href="#ClickHouse-397"><span class="linenos"> 397</span></a> <span class="s2">&quot;uniqTheta&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-398"><a href="#ClickHouse-398"><span class="linenos"> 398</span></a> <span class="s2">&quot;quantile&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-399"><a href="#ClickHouse-399"><span class="linenos"> 399</span></a> <span class="s2">&quot;quantiles&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-400"><a href="#ClickHouse-400"><span class="linenos"> 400</span></a> <span class="s2">&quot;quantileExact&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-401"><a href="#ClickHouse-401"><span class="linenos"> 401</span></a> <span class="s2">&quot;quantilesExact&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-402"><a href="#ClickHouse-402"><span class="linenos"> 402</span></a> <span class="s2">&quot;quantileExactLow&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-403"><a href="#ClickHouse-403"><span class="linenos"> 403</span></a> <span class="s2">&quot;quantilesExactLow&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-404"><a href="#ClickHouse-404"><span class="linenos"> 404</span></a> <span class="s2">&quot;quantileExactHigh&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-405"><a href="#ClickHouse-405"><span class="linenos"> 405</span></a> <span class="s2">&quot;quantilesExactHigh&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-406"><a href="#ClickHouse-406"><span class="linenos"> 406</span></a> <span class="s2">&quot;quantileExactWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-407"><a href="#ClickHouse-407"><span class="linenos"> 407</span></a> <span class="s2">&quot;quantilesExactWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-408"><a href="#ClickHouse-408"><span class="linenos"> 408</span></a> <span class="s2">&quot;quantileTiming&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-409"><a href="#ClickHouse-409"><span class="linenos"> 409</span></a> <span class="s2">&quot;quantilesTiming&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-410"><a href="#ClickHouse-410"><span class="linenos"> 410</span></a> <span class="s2">&quot;quantileTimingWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-411"><a href="#ClickHouse-411"><span class="linenos"> 411</span></a> <span class="s2">&quot;quantilesTimingWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-412"><a href="#ClickHouse-412"><span class="linenos"> 412</span></a> <span class="s2">&quot;quantileDeterministic&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-413"><a href="#ClickHouse-413"><span class="linenos"> 413</span></a> <span class="s2">&quot;quantilesDeterministic&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-414"><a href="#ClickHouse-414"><span class="linenos"> 414</span></a> <span class="s2">&quot;quantileTDigest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-415"><a href="#ClickHouse-415"><span class="linenos"> 415</span></a> <span class="s2">&quot;quantilesTDigest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-416"><a href="#ClickHouse-416"><span class="linenos"> 416</span></a> <span class="s2">&quot;quantileTDigestWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-417"><a href="#ClickHouse-417"><span class="linenos"> 417</span></a> <span class="s2">&quot;quantilesTDigestWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-418"><a href="#ClickHouse-418"><span class="linenos"> 418</span></a> <span class="s2">&quot;quantileBFloat16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-419"><a href="#ClickHouse-419"><span class="linenos"> 419</span></a> <span class="s2">&quot;quantilesBFloat16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-420"><a href="#ClickHouse-420"><span class="linenos"> 420</span></a> <span class="s2">&quot;quantileBFloat16Weighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-421"><a href="#ClickHouse-421"><span class="linenos"> 421</span></a> <span class="s2">&quot;quantilesBFloat16Weighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-422"><a href="#ClickHouse-422"><span class="linenos"> 422</span></a> <span class="s2">&quot;simpleLinearRegression&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-423"><a href="#ClickHouse-423"><span class="linenos"> 423</span></a> <span class="s2">&quot;stochasticLinearRegression&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-424"><a href="#ClickHouse-424"><span class="linenos"> 424</span></a> <span class="s2">&quot;stochasticLogisticRegression&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-425"><a href="#ClickHouse-425"><span class="linenos"> 425</span></a> <span class="s2">&quot;categoricalInformationValue&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-426"><a href="#ClickHouse-426"><span class="linenos"> 426</span></a> <span class="s2">&quot;contingency&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-427"><a href="#ClickHouse-427"><span class="linenos"> 427</span></a> <span class="s2">&quot;cramersV&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-428"><a href="#ClickHouse-428"><span class="linenos"> 428</span></a> <span class="s2">&quot;cramersVBiasCorrected&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-429"><a href="#ClickHouse-429"><span class="linenos"> 429</span></a> <span class="s2">&quot;theilsU&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-430"><a href="#ClickHouse-430"><span class="linenos"> 430</span></a> <span class="s2">&quot;maxIntersections&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-431"><a href="#ClickHouse-431"><span class="linenos"> 431</span></a> <span class="s2">&quot;maxIntersectionsPosition&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-432"><a href="#ClickHouse-432"><span class="linenos"> 432</span></a> <span class="s2">&quot;meanZTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-433"><a href="#ClickHouse-433"><span class="linenos"> 433</span></a> <span class="s2">&quot;quantileInterpolatedWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-434"><a href="#ClickHouse-434"><span class="linenos"> 434</span></a> <span class="s2">&quot;quantilesInterpolatedWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-435"><a href="#ClickHouse-435"><span class="linenos"> 435</span></a> <span class="s2">&quot;quantileGK&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-436"><a href="#ClickHouse-436"><span class="linenos"> 436</span></a> <span class="s2">&quot;quantilesGK&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-437"><a href="#ClickHouse-437"><span class="linenos"> 437</span></a> <span class="s2">&quot;sparkBar&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-438"><a href="#ClickHouse-438"><span class="linenos"> 438</span></a> <span class="s2">&quot;sumCount&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-439"><a href="#ClickHouse-439"><span class="linenos"> 439</span></a> <span class="s2">&quot;largestTriangleThreeBuckets&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-440"><a href="#ClickHouse-440"><span class="linenos"> 440</span></a> <span class="s2">&quot;histogram&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-441"><a href="#ClickHouse-441"><span class="linenos"> 441</span></a> <span class="s2">&quot;sequenceMatch&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-442"><a href="#ClickHouse-442"><span class="linenos"> 442</span></a> <span class="s2">&quot;sequenceCount&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-443"><a href="#ClickHouse-443"><span class="linenos"> 443</span></a> <span class="s2">&quot;windowFunnel&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-444"><a href="#ClickHouse-444"><span class="linenos"> 444</span></a> <span class="s2">&quot;retention&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-445"><a href="#ClickHouse-445"><span class="linenos"> 445</span></a> <span class="s2">&quot;uniqUpTo&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-446"><a href="#ClickHouse-446"><span class="linenos"> 446</span></a> <span class="s2">&quot;sequenceNextNode&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-447"><a href="#ClickHouse-447"><span class="linenos"> 447</span></a> <span class="s2">&quot;exponentialTimeDecayedAvg&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-448"><a href="#ClickHouse-448"><span class="linenos"> 448</span></a> <span class="p">}</span>
</span><span id="ClickHouse-449"><a href="#ClickHouse-449"><span class="linenos"> 449</span></a>
</span><span id="ClickHouse-450"><a href="#ClickHouse-450"><span class="linenos"> 450</span></a> <span class="n">AGG_FUNCTIONS_SUFFIXES</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse-451"><a href="#ClickHouse-451"><span class="linenos"> 451</span></a> <span class="s2">&quot;If&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-452"><a href="#ClickHouse-452"><span class="linenos"> 452</span></a> <span class="s2">&quot;Array&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-453"><a href="#ClickHouse-453"><span class="linenos"> 453</span></a> <span class="s2">&quot;ArrayIf&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-454"><a href="#ClickHouse-454"><span class="linenos"> 454</span></a> <span class="s2">&quot;Map&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-455"><a href="#ClickHouse-455"><span class="linenos"> 455</span></a> <span class="s2">&quot;SimpleState&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-456"><a href="#ClickHouse-456"><span class="linenos"> 456</span></a> <span class="s2">&quot;State&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-457"><a href="#ClickHouse-457"><span class="linenos"> 457</span></a> <span class="s2">&quot;Merge&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-458"><a href="#ClickHouse-458"><span class="linenos"> 458</span></a> <span class="s2">&quot;MergeState&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-459"><a href="#ClickHouse-459"><span class="linenos"> 459</span></a> <span class="s2">&quot;ForEach&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-460"><a href="#ClickHouse-460"><span class="linenos"> 460</span></a> <span class="s2">&quot;Distinct&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-461"><a href="#ClickHouse-461"><span class="linenos"> 461</span></a> <span class="s2">&quot;OrDefault&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-462"><a href="#ClickHouse-462"><span class="linenos"> 462</span></a> <span class="s2">&quot;OrNull&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-463"><a href="#ClickHouse-463"><span class="linenos"> 463</span></a> <span class="s2">&quot;Resample&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-464"><a href="#ClickHouse-464"><span class="linenos"> 464</span></a> <span class="s2">&quot;ArgMin&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-465"><a href="#ClickHouse-465"><span class="linenos"> 465</span></a> <span class="s2">&quot;ArgMax&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-466"><a href="#ClickHouse-466"><span class="linenos"> 466</span></a> <span class="p">]</span>
</span><span id="ClickHouse-467"><a href="#ClickHouse-467"><span class="linenos"> 467</span></a>
</span><span id="ClickHouse-468"><a href="#ClickHouse-468"><span class="linenos"> 468</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-469"><a href="#ClickHouse-469"><span class="linenos"> 469</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span>
</span><span id="ClickHouse-470"><a href="#ClickHouse-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span>
</span><span id="ClickHouse-471"><a href="#ClickHouse-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span>
</span><span id="ClickHouse-472"><a href="#ClickHouse-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span>
</span><span id="ClickHouse-473"><a href="#ClickHouse-473"><span class="linenos"> 473</span></a> <span class="p">}</span>
</span><span id="ClickHouse-474"><a href="#ClickHouse-474"><span class="linenos"> 474</span></a>
</span><span id="ClickHouse-475"><a href="#ClickHouse-475"><span class="linenos"> 475</span></a> <span class="n">RESERVED_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span>
</span><span id="ClickHouse-476"><a href="#ClickHouse-476"><span class="linenos"> 476</span></a>
</span><span id="ClickHouse-477"><a href="#ClickHouse-477"><span class="linenos"> 477</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-478"><a href="#ClickHouse-478"><span class="linenos"> 478</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span>
</span><span id="ClickHouse-479"><a href="#ClickHouse-479"><span class="linenos"> 479</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
</span><span id="ClickHouse-480"><a href="#ClickHouse-480"><span class="linenos"> 480</span></a> <span class="p">}</span>
</span><span id="ClickHouse-481"><a href="#ClickHouse-481"><span class="linenos"> 481</span></a>
</span><span id="ClickHouse-482"><a href="#ClickHouse-482"><span class="linenos"> 482</span></a> <span class="n">AGG_FUNC_MAPPING</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse-483"><a href="#ClickHouse-483"><span class="linenos"> 483</span></a> <span class="k">lambda</span> <span class="n">functions</span><span class="p">,</span> <span class="n">suffixes</span><span class="p">:</span> <span class="p">{</span>
</span><span id="ClickHouse-484"><a href="#ClickHouse-484"><span class="linenos"> 484</span></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">f</span><span class="si">}{</span><span class="n">sfx</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">sfx</span><span class="p">)</span> <span class="k">for</span> <span class="n">sfx</span> <span class="ow">in</span> <span class="p">(</span><span class="n">suffixes</span> <span class="o">+</span> <span class="p">[</span><span class="s2">&quot;&quot;</span><span class="p">])</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">functions</span>
</span><span id="ClickHouse-485"><a href="#ClickHouse-485"><span class="linenos"> 485</span></a> <span class="p">}</span>
</span><span id="ClickHouse-486"><a href="#ClickHouse-486"><span class="linenos"> 486</span></a> <span class="p">)(</span><span class="n">AGG_FUNCTIONS</span><span class="p">,</span> <span class="n">AGG_FUNCTIONS_SUFFIXES</span><span class="p">)</span>
</span><span id="ClickHouse-487"><a href="#ClickHouse-487"><span class="linenos"> 487</span></a>
</span><span id="ClickHouse-488"><a href="#ClickHouse-488"><span class="linenos"> 488</span></a> <span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span><span class="p">,</span> <span class="s2">&quot;TUPLE&quot;</span><span class="p">}</span>
</span><span id="ClickHouse-489"><a href="#ClickHouse-489"><span class="linenos"> 489</span></a>
</span><span id="ClickHouse-490"><a href="#ClickHouse-490"><span class="linenos"> 490</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-491"><a href="#ClickHouse-491"><span class="linenos"> 491</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse-492"><a href="#ClickHouse-492"><span class="linenos"> 492</span></a> <span class="s2">&quot;ARRAYJOIN&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()),</span>
</span><span id="ClickHouse-493"><a href="#ClickHouse-493"><span class="linenos"> 493</span></a> <span class="s2">&quot;QUANTILE&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_quantile</span><span class="p">(),</span>
</span><span id="ClickHouse-494"><a href="#ClickHouse-494"><span class="linenos"> 494</span></a> <span class="s2">&quot;MEDIAN&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_quantile</span><span class="p">(),</span>
</span><span id="ClickHouse-495"><a href="#ClickHouse-495"><span class="linenos"> 495</span></a> <span class="s2">&quot;COLUMNS&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_columns</span><span class="p">(),</span>
</span><span id="ClickHouse-496"><a href="#ClickHouse-496"><span class="linenos"> 496</span></a> <span class="p">}</span>
</span><span id="ClickHouse-497"><a href="#ClickHouse-497"><span class="linenos"> 497</span></a>
</span><span id="ClickHouse-498"><a href="#ClickHouse-498"><span class="linenos"> 498</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;MATCH&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-499"><a href="#ClickHouse-499"><span class="linenos"> 499</span></a>
</span><span id="ClickHouse-500"><a href="#ClickHouse-500"><span class="linenos"> 500</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse-501"><a href="#ClickHouse-501"><span class="linenos"> 501</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;DYNAMIC&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-502"><a href="#ClickHouse-502"><span class="linenos"> 502</span></a>
</span><span id="ClickHouse-503"><a href="#ClickHouse-503"><span class="linenos"> 503</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse-504"><a href="#ClickHouse-504"><span class="linenos"> 504</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;ANY&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-505"><a href="#ClickHouse-505"><span class="linenos"> 505</span></a>
</span><span id="ClickHouse-506"><a href="#ClickHouse-506"><span class="linenos"> 506</span></a> <span class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse-507"><a href="#ClickHouse-507"><span class="linenos"> 507</span></a> <span class="n">NO_PAREN_FUNCTIONS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">)</span>
</span><span id="ClickHouse-508"><a href="#ClickHouse-508"><span class="linenos"> 508</span></a>
</span><span id="ClickHouse-509"><a href="#ClickHouse-509"><span class="linenos"> 509</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-510"><a href="#ClickHouse-510"><span class="linenos"> 510</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse-511"><a href="#ClickHouse-511"><span class="linenos"> 511</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_global_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span>
</span><span id="ClickHouse-512"><a href="#ClickHouse-512"><span class="linenos"> 512</span></a> <span class="p">}</span>
</span><span id="ClickHouse-513"><a href="#ClickHouse-513"><span class="linenos"> 513</span></a>
</span><span id="ClickHouse-514"><a href="#ClickHouse-514"><span class="linenos"> 514</span></a> <span class="c1"># The PLACEHOLDER entry is popped because 1) it doesn&#39;t affect Clickhouse (it corresponds to</span>
</span><span id="ClickHouse-515"><a href="#ClickHouse-515"><span class="linenos"> 515</span></a> <span class="c1"># the postgres-specific JSONBContains parser) and 2) it makes parsing the ternary op simpler.</span>
</span><span id="ClickHouse-516"><a href="#ClickHouse-516"><span class="linenos"> 516</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse-517"><a href="#ClickHouse-517"><span class="linenos"> 517</span></a> <span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">)</span>
</span><span id="ClickHouse-518"><a href="#ClickHouse-518"><span class="linenos"> 518</span></a>
</span><span id="ClickHouse-519"><a href="#ClickHouse-519"><span class="linenos"> 519</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-520"><a href="#ClickHouse-520"><span class="linenos"> 520</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">,</span>
</span><span id="ClickHouse-521"><a href="#ClickHouse-521"><span class="linenos"> 521</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span>
</span><span id="ClickHouse-522"><a href="#ClickHouse-522"><span class="linenos"> 522</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span>
</span><span id="ClickHouse-523"><a href="#ClickHouse-523"><span class="linenos"> 523</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="ClickHouse-524"><a href="#ClickHouse-524"><span class="linenos"> 524</span></a> <span class="p">}</span>
</span><span id="ClickHouse-525"><a href="#ClickHouse-525"><span class="linenos"> 525</span></a>
</span><span id="ClickHouse-526"><a href="#ClickHouse-526"><span class="linenos"> 526</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span>
</span><span id="ClickHouse-527"><a href="#ClickHouse-527"><span class="linenos"> 527</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span>
</span><span id="ClickHouse-528"><a href="#ClickHouse-528"><span class="linenos"> 528</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="ClickHouse-529"><a href="#ClickHouse-529"><span class="linenos"> 529</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span>
</span><span id="ClickHouse-530"><a href="#ClickHouse-530"><span class="linenos"> 530</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span>
</span><span id="ClickHouse-531"><a href="#ClickHouse-531"><span class="linenos"> 531</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span>
</span><span id="ClickHouse-532"><a href="#ClickHouse-532"><span class="linenos"> 532</span></a> <span class="p">}</span>
</span><span id="ClickHouse-533"><a href="#ClickHouse-533"><span class="linenos"> 533</span></a>
</span><span id="ClickHouse-534"><a href="#ClickHouse-534"><span class="linenos"> 534</span></a> <span class="n">ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span>
</span><span id="ClickHouse-535"><a href="#ClickHouse-535"><span class="linenos"> 535</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span>
</span><span id="ClickHouse-536"><a href="#ClickHouse-536"><span class="linenos"> 536</span></a> <span class="p">}</span>
</span><span id="ClickHouse-537"><a href="#ClickHouse-537"><span class="linenos"> 537</span></a>
</span><span id="ClickHouse-538"><a href="#ClickHouse-538"><span class="linenos"> 538</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-539"><a href="#ClickHouse-539"><span class="linenos"> 539</span></a>
</span><span id="ClickHouse-540"><a href="#ClickHouse-540"><span class="linenos"> 540</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-541"><a href="#ClickHouse-541"><span class="linenos"> 541</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse-542"><a href="#ClickHouse-542"><span class="linenos"> 542</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span>
</span><span id="ClickHouse-543"><a href="#ClickHouse-543"><span class="linenos"> 543</span></a> <span class="s2">&quot;settings&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-544"><a href="#ClickHouse-544"><span class="linenos"> 544</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">),</span>
</span><span id="ClickHouse-545"><a href="#ClickHouse-545"><span class="linenos"> 545</span></a> <span class="p">),</span>
</span><span id="ClickHouse-546"><a href="#ClickHouse-546"><span class="linenos"> 546</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;format&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span>
</span><span id="ClickHouse-547"><a href="#ClickHouse-547"><span class="linenos"> 547</span></a> <span class="p">}</span>
</span><span id="ClickHouse-548"><a href="#ClickHouse-548"><span class="linenos"> 548</span></a>
</span><span id="ClickHouse-549"><a href="#ClickHouse-549"><span class="linenos"> 549</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-550"><a href="#ClickHouse-550"><span class="linenos"> 550</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse-551"><a href="#ClickHouse-551"><span class="linenos"> 551</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_constraint</span><span class="p">(),</span>
</span><span id="ClickHouse-552"><a href="#ClickHouse-552"><span class="linenos"> 552</span></a> <span class="s2">&quot;CODEC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span>
</span><span id="ClickHouse-553"><a href="#ClickHouse-553"><span class="linenos"> 553</span></a> <span class="p">}</span>
</span><span id="ClickHouse-554"><a href="#ClickHouse-554"><span class="linenos"> 554</span></a>
</span><span id="ClickHouse-555"><a href="#ClickHouse-555"><span class="linenos"> 555</span></a> <span class="n">ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-556"><a href="#ClickHouse-556"><span class="linenos"> 556</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ALTER_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse-557"><a href="#ClickHouse-557"><span class="linenos"> 557</span></a> <span class="s2">&quot;REPLACE&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_replace</span><span class="p">(),</span>
</span><span id="ClickHouse-558"><a href="#ClickHouse-558"><span class="linenos"> 558</span></a> <span class="p">}</span>
</span><span id="ClickHouse-559"><a href="#ClickHouse-559"><span class="linenos"> 559</span></a>
</span><span id="ClickHouse-560"><a href="#ClickHouse-560"><span class="linenos"> 560</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-561"><a href="#ClickHouse-561"><span class="linenos"> 561</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">,</span>
</span><span id="ClickHouse-562"><a href="#ClickHouse-562"><span class="linenos"> 562</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-563"><a href="#ClickHouse-563"><span class="linenos"> 563</span></a> <span class="p">}</span>
</span><span id="ClickHouse-564"><a href="#ClickHouse-564"><span class="linenos"> 564</span></a>
</span><span id="ClickHouse-565"><a href="#ClickHouse-565"><span class="linenos"> 565</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-566"><a href="#ClickHouse-566"><span class="linenos"> 566</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse-567"><a href="#ClickHouse-567"><span class="linenos"> 567</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_parameter</span><span class="p">(),</span>
</span><span id="ClickHouse-568"><a href="#ClickHouse-568"><span class="linenos"> 568</span></a> <span class="p">}</span>
</span><span id="ClickHouse-569"><a href="#ClickHouse-569"><span class="linenos"> 569</span></a>
</span><span id="ClickHouse-570"><a href="#ClickHouse-570"><span class="linenos"> 570</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/create/function</span>
</span><span id="ClickHouse-571"><a href="#ClickHouse-571"><span class="linenos"> 571</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_user_defined_function_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-572"><a href="#ClickHouse-572"><span class="linenos"> 572</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">()</span>
</span><span id="ClickHouse-573"><a href="#ClickHouse-573"><span class="linenos"> 573</span></a>
</span><span id="ClickHouse-574"><a href="#ClickHouse-574"><span class="linenos"> 574</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_types</span><span class="p">(</span>
</span><span id="ClickHouse-575"><a href="#ClickHouse-575"><span class="linenos"> 575</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-576"><a href="#ClickHouse-576"><span class="linenos"> 576</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-577"><a href="#ClickHouse-577"><span class="linenos"> 577</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span>
</span><span id="ClickHouse-578"><a href="#ClickHouse-578"><span class="linenos"> 578</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span>
</span><span id="ClickHouse-579"><a href="#ClickHouse-579"><span class="linenos"> 579</span></a> <span class="p">)</span>
</span><span id="ClickHouse-580"><a href="#ClickHouse-580"><span class="linenos"> 580</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="ow">and</span> <span class="n">dtype</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="ClickHouse-581"><a href="#ClickHouse-581"><span class="linenos"> 581</span></a> <span class="c1"># Mark every type as non-nullable which is ClickHouse&#39;s default, unless it&#39;s</span>
</span><span id="ClickHouse-582"><a href="#ClickHouse-582"><span class="linenos"> 582</span></a> <span class="c1"># already marked as nullable. This marker helps us transpile types from other</span>
</span><span id="ClickHouse-583"><a href="#ClickHouse-583"><span class="linenos"> 583</span></a> <span class="c1"># dialects to ClickHouse, so that we can e.g. produce `CAST(x AS Nullable(String))`</span>
</span><span id="ClickHouse-584"><a href="#ClickHouse-584"><span class="linenos"> 584</span></a> <span class="c1"># from `CAST(x AS TEXT)`. If there is a `NULL` value in `x`, the former would</span>
</span><span id="ClickHouse-585"><a href="#ClickHouse-585"><span class="linenos"> 585</span></a> <span class="c1"># fail in ClickHouse without the `Nullable` type constructor.</span>
</span><span id="ClickHouse-586"><a href="#ClickHouse-586"><span class="linenos"> 586</span></a> <span class="n">dtype</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
</span><span id="ClickHouse-587"><a href="#ClickHouse-587"><span class="linenos"> 587</span></a>
</span><span id="ClickHouse-588"><a href="#ClickHouse-588"><span class="linenos"> 588</span></a> <span class="k">return</span> <span class="n">dtype</span>
</span><span id="ClickHouse-589"><a href="#ClickHouse-589"><span class="linenos"> 589</span></a>
</span><span id="ClickHouse-590"><a href="#ClickHouse-590"><span class="linenos"> 590</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Extract</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">:</span>
</span><span id="ClickHouse-591"><a href="#ClickHouse-591"><span class="linenos"> 591</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="ClickHouse-592"><a href="#ClickHouse-592"><span class="linenos"> 592</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
</span><span id="ClickHouse-593"><a href="#ClickHouse-593"><span class="linenos"> 593</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span>
</span><span id="ClickHouse-594"><a href="#ClickHouse-594"><span class="linenos"> 594</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="ClickHouse-595"><a href="#ClickHouse-595"><span class="linenos"> 595</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">()</span>
</span><span id="ClickHouse-596"><a href="#ClickHouse-596"><span class="linenos"> 596</span></a>
</span><span id="ClickHouse-597"><a href="#ClickHouse-597"><span class="linenos"> 597</span></a> <span class="c1"># We return Anonymous here because extract and regexpExtract have different semantics,</span>
</span><span id="ClickHouse-598"><a href="#ClickHouse-598"><span class="linenos"> 598</span></a> <span class="c1"># so parsing extract(foo, bar) into RegexpExtract can potentially break queries. E.g.,</span>
</span><span id="ClickHouse-599"><a href="#ClickHouse-599"><span class="linenos"> 599</span></a> <span class="c1"># `extract(&#39;foobar&#39;, &#39;b&#39;)` works, but ClickHouse crashes for `regexpExtract(&#39;foobar&#39;, &#39;b&#39;)`.</span>
</span><span id="ClickHouse-600"><a href="#ClickHouse-600"><span class="linenos"> 600</span></a> <span class="c1">#</span>
</span><span id="ClickHouse-601"><a href="#ClickHouse-601"><span class="linenos"> 601</span></a> <span class="c1"># TODO: can we somehow convert the former into an equivalent `regexpExtract` call?</span>
</span><span id="ClickHouse-602"><a href="#ClickHouse-602"><span class="linenos"> 602</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
</span><span id="ClickHouse-603"><a href="#ClickHouse-603"><span class="linenos"> 603</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse-604"><a href="#ClickHouse-604"><span class="linenos"> 604</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">&quot;extract&quot;</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()]</span>
</span><span id="ClickHouse-605"><a href="#ClickHouse-605"><span class="linenos"> 605</span></a> <span class="p">)</span>
</span><span id="ClickHouse-606"><a href="#ClickHouse-606"><span class="linenos"> 606</span></a>
</span><span id="ClickHouse-607"><a href="#ClickHouse-607"><span class="linenos"> 607</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-608"><a href="#ClickHouse-608"><span class="linenos"> 608</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span>
</span><span id="ClickHouse-609"><a href="#ClickHouse-609"><span class="linenos"> 609</span></a>
</span><span id="ClickHouse-610"><a href="#ClickHouse-610"><span class="linenos"> 610</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">):</span>
</span><span id="ClickHouse-611"><a href="#ClickHouse-611"><span class="linenos"> 611</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse-612"><a href="#ClickHouse-612"><span class="linenos"> 612</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span>
</span><span id="ClickHouse-613"><a href="#ClickHouse-613"><span class="linenos"> 613</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span>
</span><span id="ClickHouse-614"><a href="#ClickHouse-614"><span class="linenos"> 614</span></a> <span class="n">true</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="ClickHouse-615"><a href="#ClickHouse-615"><span class="linenos"> 615</span></a> <span class="n">false</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="ClickHouse-616"><a href="#ClickHouse-616"><span class="linenos"> 616</span></a> <span class="p">)</span>
</span><span id="ClickHouse-617"><a href="#ClickHouse-617"><span class="linenos"> 617</span></a>
</span><span id="ClickHouse-618"><a href="#ClickHouse-618"><span class="linenos"> 618</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse-619"><a href="#ClickHouse-619"><span class="linenos"> 619</span></a>
</span><span id="ClickHouse-620"><a href="#ClickHouse-620"><span class="linenos"> 620</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_query_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-621"><a href="#ClickHouse-621"><span class="linenos"> 621</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="ClickHouse-622"><a href="#ClickHouse-622"><span class="linenos"> 622</span></a><span class="sd"> Parse a placeholder expression like SELECT {abc: UInt32} or FROM {table: Identifier}</span>
</span><span id="ClickHouse-623"><a href="#ClickHouse-623"><span class="linenos"> 623</span></a><span class="sd"> https://clickhouse.com/docs/en/sql-reference/syntax#defining-and-using-query-parameters</span>
</span><span id="ClickHouse-624"><a href="#ClickHouse-624"><span class="linenos"> 624</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="ClickHouse-625"><a href="#ClickHouse-625"><span class="linenos"> 625</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="ClickHouse-626"><a href="#ClickHouse-626"><span class="linenos"> 626</span></a>
</span><span id="ClickHouse-627"><a href="#ClickHouse-627"><span class="linenos"> 627</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="ClickHouse-628"><a href="#ClickHouse-628"><span class="linenos"> 628</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span>
</span><span id="ClickHouse-629"><a href="#ClickHouse-629"><span class="linenos"> 629</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
</span><span id="ClickHouse-630"><a href="#ClickHouse-630"><span class="linenos"> 630</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;IDENTIFIER&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">&quot;Identifier&quot;</span>
</span><span id="ClickHouse-631"><a href="#ClickHouse-631"><span class="linenos"> 631</span></a> <span class="p">)</span>
</span><span id="ClickHouse-632"><a href="#ClickHouse-632"><span class="linenos"> 632</span></a>
</span><span id="ClickHouse-633"><a href="#ClickHouse-633"><span class="linenos"> 633</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span>
</span><span id="ClickHouse-634"><a href="#ClickHouse-634"><span class="linenos"> 634</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="ClickHouse-635"><a href="#ClickHouse-635"><span class="linenos"> 635</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse-636"><a href="#ClickHouse-636"><span class="linenos"> 636</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">):</span>
</span><span id="ClickHouse-637"><a href="#ClickHouse-637"><span class="linenos"> 637</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;Expecting }&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-638"><a href="#ClickHouse-638"><span class="linenos"> 638</span></a>
</span><span id="ClickHouse-639"><a href="#ClickHouse-639"><span class="linenos"> 639</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">quoted</span><span class="p">:</span>
</span><span id="ClickHouse-640"><a href="#ClickHouse-640"><span class="linenos"> 640</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
</span><span id="ClickHouse-641"><a href="#ClickHouse-641"><span class="linenos"> 641</span></a>
</span><span id="ClickHouse-642"><a href="#ClickHouse-642"><span class="linenos"> 642</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span>
</span><span id="ClickHouse-643"><a href="#ClickHouse-643"><span class="linenos"> 643</span></a>
</span><span id="ClickHouse-644"><a href="#ClickHouse-644"><span class="linenos"> 644</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_bracket</span><span class="p">(</span>
</span><span id="ClickHouse-645"><a href="#ClickHouse-645"><span class="linenos"> 645</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse-646"><a href="#ClickHouse-646"><span class="linenos"> 646</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-647"><a href="#ClickHouse-647"><span class="linenos"> 647</span></a> <span class="n">l_brace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span><span id="ClickHouse-648"><a href="#ClickHouse-648"><span class="linenos"> 648</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-649"><a href="#ClickHouse-649"><span class="linenos"> 649</span></a>
</span><span id="ClickHouse-650"><a href="#ClickHouse-650"><span class="linenos"> 650</span></a> <span class="k">if</span> <span class="n">l_brace</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bracket</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">):</span>
</span><span id="ClickHouse-651"><a href="#ClickHouse-651"><span class="linenos"> 651</span></a> <span class="n">varmap</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">(</span><span class="n">keys</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(),</span> <span class="n">values</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">())</span>
</span><span id="ClickHouse-652"><a href="#ClickHouse-652"><span class="linenos"> 652</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">bracket</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="ClickHouse-653"><a href="#ClickHouse-653"><span class="linenos"> 653</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">):</span>
</span><span id="ClickHouse-654"><a href="#ClickHouse-654"><span class="linenos"> 654</span></a> <span class="k">break</span>
</span><span id="ClickHouse-655"><a href="#ClickHouse-655"><span class="linenos"> 655</span></a>
</span><span id="ClickHouse-656"><a href="#ClickHouse-656"><span class="linenos"> 656</span></a> <span class="n">varmap</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;keys&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
</span><span id="ClickHouse-657"><a href="#ClickHouse-657"><span class="linenos"> 657</span></a> <span class="n">varmap</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;values&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-658"><a href="#ClickHouse-658"><span class="linenos"> 658</span></a>
</span><span id="ClickHouse-659"><a href="#ClickHouse-659"><span class="linenos"> 659</span></a> <span class="k">return</span> <span class="n">varmap</span>
</span><span id="ClickHouse-660"><a href="#ClickHouse-660"><span class="linenos"> 660</span></a>
</span><span id="ClickHouse-661"><a href="#ClickHouse-661"><span class="linenos"> 661</span></a> <span class="k">return</span> <span class="n">bracket</span>
</span><span id="ClickHouse-662"><a href="#ClickHouse-662"><span class="linenos"> 662</span></a>
</span><span id="ClickHouse-663"><a href="#ClickHouse-663"><span class="linenos"> 663</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">is_global</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span>
</span><span id="ClickHouse-664"><a href="#ClickHouse-664"><span class="linenos"> 664</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-665"><a href="#ClickHouse-665"><span class="linenos"> 665</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">,</span> <span class="n">is_global</span><span class="p">)</span>
</span><span id="ClickHouse-666"><a href="#ClickHouse-666"><span class="linenos"> 666</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse-667"><a href="#ClickHouse-667"><span class="linenos"> 667</span></a>
</span><span id="ClickHouse-668"><a href="#ClickHouse-668"><span class="linenos"> 668</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_global_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span>
</span><span id="ClickHouse-669"><a href="#ClickHouse-669"><span class="linenos"> 669</span></a> <span class="n">is_negated</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span>
</span><span id="ClickHouse-670"><a href="#ClickHouse-670"><span class="linenos"> 670</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">is_global</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-671"><a href="#ClickHouse-671"><span class="linenos"> 671</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_negated</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="ClickHouse-672"><a href="#ClickHouse-672"><span class="linenos"> 672</span></a>
</span><span id="ClickHouse-673"><a href="#ClickHouse-673"><span class="linenos"> 673</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_table</span><span class="p">(</span>
</span><span id="ClickHouse-674"><a href="#ClickHouse-674"><span class="linenos"> 674</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse-675"><a href="#ClickHouse-675"><span class="linenos"> 675</span></a> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-676"><a href="#ClickHouse-676"><span class="linenos"> 676</span></a> <span class="n">joins</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-677"><a href="#ClickHouse-677"><span class="linenos"> 677</span></a> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="ClickHouse-678"><a href="#ClickHouse-678"><span class="linenos"> 678</span></a> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-679"><a href="#ClickHouse-679"><span class="linenos"> 679</span></a> <span class="n">is_db_reference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-680"><a href="#ClickHouse-680"><span class="linenos"> 680</span></a> <span class="n">parse_partition</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-681"><a href="#ClickHouse-681"><span class="linenos"> 681</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-682"><a href="#ClickHouse-682"><span class="linenos"> 682</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span>
</span><span id="ClickHouse-683"><a href="#ClickHouse-683"><span class="linenos"> 683</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span>
</span><span id="ClickHouse-684"><a href="#ClickHouse-684"><span class="linenos"> 684</span></a> <span class="n">joins</span><span class="o">=</span><span class="n">joins</span><span class="p">,</span>
</span><span id="ClickHouse-685"><a href="#ClickHouse-685"><span class="linenos"> 685</span></a> <span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span><span class="p">,</span>
</span><span id="ClickHouse-686"><a href="#ClickHouse-686"><span class="linenos"> 686</span></a> <span class="n">parse_bracket</span><span class="o">=</span><span class="n">parse_bracket</span><span class="p">,</span>
</span><span id="ClickHouse-687"><a href="#ClickHouse-687"><span class="linenos"> 687</span></a> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_db_reference</span><span class="p">,</span>
</span><span id="ClickHouse-688"><a href="#ClickHouse-688"><span class="linenos"> 688</span></a> <span class="p">)</span>
</span><span id="ClickHouse-689"><a href="#ClickHouse-689"><span class="linenos"> 689</span></a>
</span><span id="ClickHouse-690"><a href="#ClickHouse-690"><span class="linenos"> 690</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
</span><span id="ClickHouse-691"><a href="#ClickHouse-691"><span class="linenos"> 691</span></a> <span class="n">inner</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span>
</span><span id="ClickHouse-692"><a href="#ClickHouse-692"><span class="linenos"> 692</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-693"><a href="#ClickHouse-693"><span class="linenos"> 693</span></a>
</span><span id="ClickHouse-694"><a href="#ClickHouse-694"><span class="linenos"> 694</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">inner</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">)</span> <span class="ow">and</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
</span><span id="ClickHouse-695"><a href="#ClickHouse-695"><span class="linenos"> 695</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="s2">&quot;generate_series&quot;</span><span class="p">)])</span>
</span><span id="ClickHouse-696"><a href="#ClickHouse-696"><span class="linenos"> 696</span></a>
</span><span id="ClickHouse-697"><a href="#ClickHouse-697"><span class="linenos"> 697</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">):</span>
</span><span id="ClickHouse-698"><a href="#ClickHouse-698"><span class="linenos"> 698</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Final</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-699"><a href="#ClickHouse-699"><span class="linenos"> 699</span></a>
</span><span id="ClickHouse-700"><a href="#ClickHouse-700"><span class="linenos"> 700</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse-701"><a href="#ClickHouse-701"><span class="linenos"> 701</span></a>
</span><span id="ClickHouse-702"><a href="#ClickHouse-702"><span class="linenos"> 702</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span>
</span><span id="ClickHouse-703"><a href="#ClickHouse-703"><span class="linenos"> 703</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(</span><span class="n">haystack_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-704"><a href="#ClickHouse-704"><span class="linenos"> 704</span></a>
</span><span id="ClickHouse-705"><a href="#ClickHouse-705"><span class="linenos"> 705</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/with/</span>
</span><span id="ClickHouse-706"><a href="#ClickHouse-706"><span class="linenos"> 706</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]:</span>
</span><span id="ClickHouse-707"><a href="#ClickHouse-707"><span class="linenos"> 707</span></a> <span class="c1"># WITH &lt;identifier&gt; AS &lt;subquery expression&gt;</span>
</span><span id="ClickHouse-708"><a href="#ClickHouse-708"><span class="linenos"> 708</span></a> <span class="n">cte</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_try_parse</span><span class="p">(</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_cte</span><span class="p">)</span>
</span><span id="ClickHouse-709"><a href="#ClickHouse-709"><span class="linenos"> 709</span></a>
</span><span id="ClickHouse-710"><a href="#ClickHouse-710"><span class="linenos"> 710</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">cte</span><span class="p">:</span>
</span><span id="ClickHouse-711"><a href="#ClickHouse-711"><span class="linenos"> 711</span></a> <span class="c1"># WITH &lt;expression&gt; AS &lt;identifier&gt;</span>
</span><span id="ClickHouse-712"><a href="#ClickHouse-712"><span class="linenos"> 712</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse-713"><a href="#ClickHouse-713"><span class="linenos"> 713</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span>
</span><span id="ClickHouse-714"><a href="#ClickHouse-714"><span class="linenos"> 714</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="ClickHouse-715"><a href="#ClickHouse-715"><span class="linenos"> 715</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span>
</span><span id="ClickHouse-716"><a href="#ClickHouse-716"><span class="linenos"> 716</span></a> <span class="n">scalar</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span><span id="ClickHouse-717"><a href="#ClickHouse-717"><span class="linenos"> 717</span></a> <span class="p">)</span>
</span><span id="ClickHouse-718"><a href="#ClickHouse-718"><span class="linenos"> 718</span></a>
</span><span id="ClickHouse-719"><a href="#ClickHouse-719"><span class="linenos"> 719</span></a> <span class="k">return</span> <span class="n">cte</span>
</span><span id="ClickHouse-720"><a href="#ClickHouse-720"><span class="linenos"> 720</span></a>
</span><span id="ClickHouse-721"><a href="#ClickHouse-721"><span class="linenos"> 721</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_join_parts</span><span class="p">(</span>
</span><span id="ClickHouse-722"><a href="#ClickHouse-722"><span class="linenos"> 722</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse-723"><a href="#ClickHouse-723"><span class="linenos"> 723</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]]:</span>
</span><span id="ClickHouse-724"><a href="#ClickHouse-724"><span class="linenos"> 724</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse-725"><a href="#ClickHouse-725"><span class="linenos"> 725</span></a> <span class="n">kind_pre</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse-726"><a href="#ClickHouse-726"><span class="linenos"> 726</span></a>
</span><span id="ClickHouse-727"><a href="#ClickHouse-727"><span class="linenos"> 727</span></a> <span class="k">if</span> <span class="n">kind_pre</span><span class="p">:</span>
</span><span id="ClickHouse-728"><a href="#ClickHouse-728"><span class="linenos"> 728</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse-729"><a href="#ClickHouse-729"><span class="linenos"> 729</span></a> <span class="n">side</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse-730"><a href="#ClickHouse-730"><span class="linenos"> 730</span></a> <span class="k">return</span> <span class="n">is_global</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span>
</span><span id="ClickHouse-731"><a href="#ClickHouse-731"><span class="linenos"> 731</span></a>
</span><span id="ClickHouse-732"><a href="#ClickHouse-732"><span class="linenos"> 732</span></a> <span class="k">return</span> <span class="p">(</span>
</span><span id="ClickHouse-733"><a href="#ClickHouse-733"><span class="linenos"> 733</span></a> <span class="n">is_global</span><span class="p">,</span>
</span><span id="ClickHouse-734"><a href="#ClickHouse-734"><span class="linenos"> 734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span>
</span><span id="ClickHouse-735"><a href="#ClickHouse-735"><span class="linenos"> 735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span>
</span><span id="ClickHouse-736"><a href="#ClickHouse-736"><span class="linenos"> 736</span></a> <span class="p">)</span>
</span><span id="ClickHouse-737"><a href="#ClickHouse-737"><span class="linenos"> 737</span></a>
</span><span id="ClickHouse-738"><a href="#ClickHouse-738"><span class="linenos"> 738</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_join</span><span class="p">(</span>
</span><span id="ClickHouse-739"><a href="#ClickHouse-739"><span class="linenos"> 739</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-740"><a href="#ClickHouse-740"><span class="linenos"> 740</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span>
</span><span id="ClickHouse-741"><a href="#ClickHouse-741"><span class="linenos"> 741</span></a> <span class="n">join</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(</span><span class="n">skip_join_token</span><span class="o">=</span><span class="n">skip_join_token</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-742"><a href="#ClickHouse-742"><span class="linenos"> 742</span></a> <span class="k">if</span> <span class="n">join</span><span class="p">:</span>
</span><span id="ClickHouse-743"><a href="#ClickHouse-743"><span class="linenos"> 743</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;global&quot;</span><span class="p">,</span> <span class="n">join</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;method&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
</span><span id="ClickHouse-744"><a href="#ClickHouse-744"><span class="linenos"> 744</span></a>
</span><span id="ClickHouse-745"><a href="#ClickHouse-745"><span class="linenos"> 745</span></a> <span class="c1"># tbl ARRAY JOIN arr &lt;-- this should be a `Column` reference, not a `Table`</span>
</span><span id="ClickHouse-746"><a href="#ClickHouse-746"><span class="linenos"> 746</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/array-join</span>
</span><span id="ClickHouse-747"><a href="#ClickHouse-747"><span class="linenos"> 747</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;ARRAY&quot;</span><span class="p">:</span>
</span><span id="ClickHouse-748"><a href="#ClickHouse-748"><span class="linenos"> 748</span></a> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="n">join</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
</span><span id="ClickHouse-749"><a href="#ClickHouse-749"><span class="linenos"> 749</span></a> <span class="n">table</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">table</span><span class="o">.</span><span class="n">to_column</span><span class="p">())</span>
</span><span id="ClickHouse-750"><a href="#ClickHouse-750"><span class="linenos"> 750</span></a>
</span><span id="ClickHouse-751"><a href="#ClickHouse-751"><span class="linenos"> 751</span></a> <span class="k">return</span> <span class="n">join</span>
</span><span id="ClickHouse-752"><a href="#ClickHouse-752"><span class="linenos"> 752</span></a>
</span><span id="ClickHouse-753"><a href="#ClickHouse-753"><span class="linenos"> 753</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_function</span><span class="p">(</span>
</span><span id="ClickHouse-754"><a href="#ClickHouse-754"><span class="linenos"> 754</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse-755"><a href="#ClickHouse-755"><span class="linenos"> 755</span></a> <span class="n">functions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="ClickHouse-756"><a href="#ClickHouse-756"><span class="linenos"> 756</span></a> <span class="n">anonymous</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-757"><a href="#ClickHouse-757"><span class="linenos"> 757</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="ClickHouse-758"><a href="#ClickHouse-758"><span class="linenos"> 758</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-759"><a href="#ClickHouse-759"><span class="linenos"> 759</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-760"><a href="#ClickHouse-760"><span class="linenos"> 760</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span>
</span><span id="ClickHouse-761"><a href="#ClickHouse-761"><span class="linenos"> 761</span></a> <span class="n">functions</span><span class="o">=</span><span class="n">functions</span><span class="p">,</span>
</span><span id="ClickHouse-762"><a href="#ClickHouse-762"><span class="linenos"> 762</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">,</span>
</span><span id="ClickHouse-763"><a href="#ClickHouse-763"><span class="linenos"> 763</span></a> <span class="n">optional_parens</span><span class="o">=</span><span class="n">optional_parens</span><span class="p">,</span>
</span><span id="ClickHouse-764"><a href="#ClickHouse-764"><span class="linenos"> 764</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span>
</span><span id="ClickHouse-765"><a href="#ClickHouse-765"><span class="linenos"> 765</span></a> <span class="p">)</span>
</span><span id="ClickHouse-766"><a href="#ClickHouse-766"><span class="linenos"> 766</span></a>
</span><span id="ClickHouse-767"><a href="#ClickHouse-767"><span class="linenos"> 767</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">expr</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span>
</span><span id="ClickHouse-768"><a href="#ClickHouse-768"><span class="linenos"> 768</span></a>
</span><span id="ClickHouse-769"><a href="#ClickHouse-769"><span class="linenos"> 769</span></a> <span class="c1"># Aggregate functions can be split in 2 parts: &lt;func_name&gt;&lt;suffix&gt;</span>
</span><span id="ClickHouse-770"><a href="#ClickHouse-770"><span class="linenos"> 770</span></a> <span class="n">parts</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse-771"><a href="#ClickHouse-771"><span class="linenos"> 771</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">AGG_FUNC_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">func</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
</span><span id="ClickHouse-772"><a href="#ClickHouse-772"><span class="linenos"> 772</span></a> <span class="p">)</span>
</span><span id="ClickHouse-773"><a href="#ClickHouse-773"><span class="linenos"> 773</span></a>
</span><span id="ClickHouse-774"><a href="#ClickHouse-774"><span class="linenos"> 774</span></a> <span class="k">if</span> <span class="n">parts</span><span class="p">:</span>
</span><span id="ClickHouse-775"><a href="#ClickHouse-775"><span class="linenos"> 775</span></a> <span class="n">anon_func</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
</span><span id="ClickHouse-776"><a href="#ClickHouse-776"><span class="linenos"> 776</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_func_params</span><span class="p">(</span><span class="n">anon_func</span><span class="p">)</span>
</span><span id="ClickHouse-777"><a href="#ClickHouse-777"><span class="linenos"> 777</span></a>
</span><span id="ClickHouse-778"><a href="#ClickHouse-778"><span class="linenos"> 778</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-779"><a href="#ClickHouse-779"><span class="linenos"> 779</span></a> <span class="s2">&quot;this&quot;</span><span class="p">:</span> <span class="n">anon_func</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="ClickHouse-780"><a href="#ClickHouse-780"><span class="linenos"> 780</span></a> <span class="s2">&quot;expressions&quot;</span><span class="p">:</span> <span class="n">anon_func</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span>
</span><span id="ClickHouse-781"><a href="#ClickHouse-781"><span class="linenos"> 781</span></a> <span class="p">}</span>
</span><span id="ClickHouse-782"><a href="#ClickHouse-782"><span class="linenos"> 782</span></a> <span class="k">if</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
</span><span id="ClickHouse-783"><a href="#ClickHouse-783"><span class="linenos"> 783</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse-784"><a href="#ClickHouse-784"><span class="linenos"> 784</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedParameterizedAgg</span> <span class="k">if</span> <span class="n">params</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedAggFunc</span>
</span><span id="ClickHouse-785"><a href="#ClickHouse-785"><span class="linenos"> 785</span></a> <span class="p">)</span>
</span><span id="ClickHouse-786"><a href="#ClickHouse-786"><span class="linenos"> 786</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-787"><a href="#ClickHouse-787"><span class="linenos"> 787</span></a> <span class="n">exp_class</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">ParameterizedAgg</span> <span class="k">if</span> <span class="n">params</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnonymousAggFunc</span>
</span><span id="ClickHouse-788"><a href="#ClickHouse-788"><span class="linenos"> 788</span></a>
</span><span id="ClickHouse-789"><a href="#ClickHouse-789"><span class="linenos"> 789</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;exp_class&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp_class</span>
</span><span id="ClickHouse-790"><a href="#ClickHouse-790"><span class="linenos"> 790</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
</span><span id="ClickHouse-791"><a href="#ClickHouse-791"><span class="linenos"> 791</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">params</span>
</span><span id="ClickHouse-792"><a href="#ClickHouse-792"><span class="linenos"> 792</span></a>
</span><span id="ClickHouse-793"><a href="#ClickHouse-793"><span class="linenos"> 793</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="ClickHouse-794"><a href="#ClickHouse-794"><span class="linenos"> 794</span></a>
</span><span id="ClickHouse-795"><a href="#ClickHouse-795"><span class="linenos"> 795</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">):</span>
</span><span id="ClickHouse-796"><a href="#ClickHouse-796"><span class="linenos"> 796</span></a> <span class="c1"># The window&#39;s func was parsed as Anonymous in base parser, fix its</span>
</span><span id="ClickHouse-797"><a href="#ClickHouse-797"><span class="linenos"> 797</span></a> <span class="c1"># type to be ClickHouse style CombinedAnonymousAggFunc / AnonymousAggFunc</span>
</span><span id="ClickHouse-798"><a href="#ClickHouse-798"><span class="linenos"> 798</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
</span><span id="ClickHouse-799"><a href="#ClickHouse-799"><span class="linenos"> 799</span></a> <span class="k">elif</span> <span class="n">params</span><span class="p">:</span>
</span><span id="ClickHouse-800"><a href="#ClickHouse-800"><span class="linenos"> 800</span></a> <span class="c1"># Params have blocked super()._parse_function() from parsing the following window</span>
</span><span id="ClickHouse-801"><a href="#ClickHouse-801"><span class="linenos"> 801</span></a> <span class="c1"># (if that exists) as they&#39;re standing between the function call and the window spec</span>
</span><span id="ClickHouse-802"><a href="#ClickHouse-802"><span class="linenos"> 802</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
</span><span id="ClickHouse-803"><a href="#ClickHouse-803"><span class="linenos"> 803</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-804"><a href="#ClickHouse-804"><span class="linenos"> 804</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">func</span>
</span><span id="ClickHouse-805"><a href="#ClickHouse-805"><span class="linenos"> 805</span></a>
</span><span id="ClickHouse-806"><a href="#ClickHouse-806"><span class="linenos"> 806</span></a> <span class="k">return</span> <span class="n">expr</span>
</span><span id="ClickHouse-807"><a href="#ClickHouse-807"><span class="linenos"> 807</span></a>
</span><span id="ClickHouse-808"><a href="#ClickHouse-808"><span class="linenos"> 808</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_func_params</span><span class="p">(</span>
</span><span id="ClickHouse-809"><a href="#ClickHouse-809"><span class="linenos"> 809</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse-810"><a href="#ClickHouse-810"><span class="linenos"> 810</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
</span><span id="ClickHouse-811"><a href="#ClickHouse-811"><span class="linenos"> 811</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="ClickHouse-812"><a href="#ClickHouse-812"><span class="linenos"> 812</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span>
</span><span id="ClickHouse-813"><a href="#ClickHouse-813"><span class="linenos"> 813</span></a>
</span><span id="ClickHouse-814"><a href="#ClickHouse-814"><span class="linenos"> 814</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="ClickHouse-815"><a href="#ClickHouse-815"><span class="linenos"> 815</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span>
</span><span id="ClickHouse-816"><a href="#ClickHouse-816"><span class="linenos"> 816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-817"><a href="#ClickHouse-817"><span class="linenos"> 817</span></a> <span class="k">return</span> <span class="n">params</span>
</span><span id="ClickHouse-818"><a href="#ClickHouse-818"><span class="linenos"> 818</span></a>
</span><span id="ClickHouse-819"><a href="#ClickHouse-819"><span class="linenos"> 819</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse-820"><a href="#ClickHouse-820"><span class="linenos"> 820</span></a>
</span><span id="ClickHouse-821"><a href="#ClickHouse-821"><span class="linenos"> 821</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_quantile</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">:</span>
</span><span id="ClickHouse-822"><a href="#ClickHouse-822"><span class="linenos"> 822</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">()</span>
</span><span id="ClickHouse-823"><a href="#ClickHouse-823"><span class="linenos"> 823</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_func_params</span><span class="p">()</span>
</span><span id="ClickHouse-824"><a href="#ClickHouse-824"><span class="linenos"> 824</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
</span><span id="ClickHouse-825"><a href="#ClickHouse-825"><span class="linenos"> 825</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">params</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">quantile</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-826"><a href="#ClickHouse-826"><span class="linenos"> 826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">quantile</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">0.5</span><span class="p">))</span>
</span><span id="ClickHouse-827"><a href="#ClickHouse-827"><span class="linenos"> 827</span></a>
</span><span id="ClickHouse-828"><a href="#ClickHouse-828"><span class="linenos"> 828</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-829"><a href="#ClickHouse-829"><span class="linenos"> 829</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(</span><span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-830"><a href="#ClickHouse-830"><span class="linenos"> 830</span></a>
</span><span id="ClickHouse-831"><a href="#ClickHouse-831"><span class="linenos"> 831</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_primary_key</span><span class="p">(</span>
</span><span id="ClickHouse-832"><a href="#ClickHouse-832"><span class="linenos"> 832</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">wrapped_optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">in_props</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-833"><a href="#ClickHouse-833"><span class="linenos"> 833</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">:</span>
</span><span id="ClickHouse-834"><a href="#ClickHouse-834"><span class="linenos"> 834</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(</span>
</span><span id="ClickHouse-835"><a href="#ClickHouse-835"><span class="linenos"> 835</span></a> <span class="n">wrapped_optional</span><span class="o">=</span><span class="n">wrapped_optional</span> <span class="ow">or</span> <span class="n">in_props</span><span class="p">,</span> <span class="n">in_props</span><span class="o">=</span><span class="n">in_props</span>
</span><span id="ClickHouse-836"><a href="#ClickHouse-836"><span class="linenos"> 836</span></a> <span class="p">)</span>
</span><span id="ClickHouse-837"><a href="#ClickHouse-837"><span class="linenos"> 837</span></a>
</span><span id="ClickHouse-838"><a href="#ClickHouse-838"><span class="linenos"> 838</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_on_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-839"><a href="#ClickHouse-839"><span class="linenos"> 839</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="ClickHouse-840"><a href="#ClickHouse-840"><span class="linenos"> 840</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;CLUSTER&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-841"><a href="#ClickHouse-841"><span class="linenos"> 841</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="ClickHouse-842"><a href="#ClickHouse-842"><span class="linenos"> 842</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span>
</span><span id="ClickHouse-843"><a href="#ClickHouse-843"><span class="linenos"> 843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-844"><a href="#ClickHouse-844"><span class="linenos"> 844</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-845"><a href="#ClickHouse-845"><span class="linenos"> 845</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="ClickHouse-846"><a href="#ClickHouse-846"><span class="linenos"> 846</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse-847"><a href="#ClickHouse-847"><span class="linenos"> 847</span></a>
</span><span id="ClickHouse-848"><a href="#ClickHouse-848"><span class="linenos"> 848</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_index_constraint</span><span class="p">(</span>
</span><span id="ClickHouse-849"><a href="#ClickHouse-849"><span class="linenos"> 849</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse-850"><a href="#ClickHouse-850"><span class="linenos"> 850</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">:</span>
</span><span id="ClickHouse-851"><a href="#ClickHouse-851"><span class="linenos"> 851</span></a> <span class="c1"># INDEX name1 expr TYPE type1(args) GRANULARITY value</span>
</span><span id="ClickHouse-852"><a href="#ClickHouse-852"><span class="linenos"> 852</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="ClickHouse-853"><a href="#ClickHouse-853"><span class="linenos"> 853</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span>
</span><span id="ClickHouse-854"><a href="#ClickHouse-854"><span class="linenos"> 854</span></a>
</span><span id="ClickHouse-855"><a href="#ClickHouse-855"><span class="linenos"> 855</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;TYPE&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span>
</span><span id="ClickHouse-856"><a href="#ClickHouse-856"><span class="linenos"> 856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span>
</span><span id="ClickHouse-857"><a href="#ClickHouse-857"><span class="linenos"> 857</span></a> <span class="p">)</span>
</span><span id="ClickHouse-858"><a href="#ClickHouse-858"><span class="linenos"> 858</span></a>
</span><span id="ClickHouse-859"><a href="#ClickHouse-859"><span class="linenos"> 859</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;GRANULARITY&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span>
</span><span id="ClickHouse-860"><a href="#ClickHouse-860"><span class="linenos"> 860</span></a>
</span><span id="ClickHouse-861"><a href="#ClickHouse-861"><span class="linenos"> 861</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse-862"><a href="#ClickHouse-862"><span class="linenos"> 862</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">,</span>
</span><span id="ClickHouse-863"><a href="#ClickHouse-863"><span class="linenos"> 863</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span>
</span><span id="ClickHouse-864"><a href="#ClickHouse-864"><span class="linenos"> 864</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span>
</span><span id="ClickHouse-865"><a href="#ClickHouse-865"><span class="linenos"> 865</span></a> <span class="n">index_type</span><span class="o">=</span><span class="n">index_type</span><span class="p">,</span>
</span><span id="ClickHouse-866"><a href="#ClickHouse-866"><span class="linenos"> 866</span></a> <span class="n">granularity</span><span class="o">=</span><span class="n">granularity</span><span class="p">,</span>
</span><span id="ClickHouse-867"><a href="#ClickHouse-867"><span class="linenos"> 867</span></a> <span class="p">)</span>
</span><span id="ClickHouse-868"><a href="#ClickHouse-868"><span class="linenos"> 868</span></a>
</span><span id="ClickHouse-869"><a href="#ClickHouse-869"><span class="linenos"> 869</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">]:</span>
</span><span id="ClickHouse-870"><a href="#ClickHouse-870"><span class="linenos"> 870</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#how-to-set-partition-expression</span>
</span><span id="ClickHouse-871"><a href="#ClickHouse-871"><span class="linenos"> 871</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span>
</span><span id="ClickHouse-872"><a href="#ClickHouse-872"><span class="linenos"> 872</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse-873"><a href="#ClickHouse-873"><span class="linenos"> 873</span></a>
</span><span id="ClickHouse-874"><a href="#ClickHouse-874"><span class="linenos"> 874</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;ID&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-875"><a href="#ClickHouse-875"><span class="linenos"> 875</span></a> <span class="c1"># Corresponds to the PARTITION ID &lt;string_value&gt; syntax</span>
</span><span id="ClickHouse-876"><a href="#ClickHouse-876"><span class="linenos"> 876</span></a> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse-877"><a href="#ClickHouse-877"><span class="linenos"> 877</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PartitionId</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span>
</span><span id="ClickHouse-878"><a href="#ClickHouse-878"><span class="linenos"> 878</span></a> <span class="p">]</span>
</span><span id="ClickHouse-879"><a href="#ClickHouse-879"><span class="linenos"> 879</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-880"><a href="#ClickHouse-880"><span class="linenos"> 880</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span>
</span><span id="ClickHouse-881"><a href="#ClickHouse-881"><span class="linenos"> 881</span></a>
</span><span id="ClickHouse-882"><a href="#ClickHouse-882"><span class="linenos"> 882</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span>
</span><span id="ClickHouse-883"><a href="#ClickHouse-883"><span class="linenos"> 883</span></a>
</span><span id="ClickHouse-884"><a href="#ClickHouse-884"><span class="linenos"> 884</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_alter_table_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-885"><a href="#ClickHouse-885"><span class="linenos"> 885</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">()</span>
</span><span id="ClickHouse-886"><a href="#ClickHouse-886"><span class="linenos"> 886</span></a>
</span><span id="ClickHouse-887"><a href="#ClickHouse-887"><span class="linenos"> 887</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span>
</span><span id="ClickHouse-888"><a href="#ClickHouse-888"><span class="linenos"> 888</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse-889"><a href="#ClickHouse-889"><span class="linenos"> 889</span></a>
</span><span id="ClickHouse-890"><a href="#ClickHouse-890"><span class="linenos"> 890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse-891"><a href="#ClickHouse-891"><span class="linenos"> 891</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReplacePartition</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span>
</span><span id="ClickHouse-892"><a href="#ClickHouse-892"><span class="linenos"> 892</span></a> <span class="p">)</span>
</span><span id="ClickHouse-893"><a href="#ClickHouse-893"><span class="linenos"> 893</span></a>
</span><span id="ClickHouse-894"><a href="#ClickHouse-894"><span class="linenos"> 894</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_projection_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">]:</span>
</span><span id="ClickHouse-895"><a href="#ClickHouse-895"><span class="linenos"> 895</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;PROJECTION&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-896"><a href="#ClickHouse-896"><span class="linenos"> 896</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse-897"><a href="#ClickHouse-897"><span class="linenos"> 897</span></a>
</span><span id="ClickHouse-898"><a href="#ClickHouse-898"><span class="linenos"> 898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse-899"><a href="#ClickHouse-899"><span class="linenos"> 899</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">,</span>
</span><span id="ClickHouse-900"><a href="#ClickHouse-900"><span class="linenos"> 900</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span>
</span><span id="ClickHouse-901"><a href="#ClickHouse-901"><span class="linenos"> 901</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span>
</span><span id="ClickHouse-902"><a href="#ClickHouse-902"><span class="linenos"> 902</span></a> <span class="p">)</span>
</span><span id="ClickHouse-903"><a href="#ClickHouse-903"><span class="linenos"> 903</span></a>
</span><span id="ClickHouse-904"><a href="#ClickHouse-904"><span class="linenos"> 904</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-905"><a href="#ClickHouse-905"><span class="linenos"> 905</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_projection_def</span><span class="p">()</span>
</span><span id="ClickHouse-906"><a href="#ClickHouse-906"><span class="linenos"> 906</span></a>
</span><span id="ClickHouse-907"><a href="#ClickHouse-907"><span class="linenos"> 907</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_alias</span><span class="p">(</span>
</span><span id="ClickHouse-908"><a href="#ClickHouse-908"><span class="linenos"> 908</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-909"><a href="#ClickHouse-909"><span class="linenos"> 909</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-910"><a href="#ClickHouse-910"><span class="linenos"> 910</span></a> <span class="c1"># In clickhouse &quot;SELECT &lt;expr&gt; APPLY(...)&quot; is a query modifier,</span>
</span><span id="ClickHouse-911"><a href="#ClickHouse-911"><span class="linenos"> 911</span></a> <span class="c1"># so &quot;APPLY&quot; shouldn&#39;t be parsed as &lt;expr&gt;&#39;s alias. However, &quot;SELECT &lt;expr&gt; apply&quot; is a valid alias</span>
</span><span id="ClickHouse-912"><a href="#ClickHouse-912"><span class="linenos"> 912</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
</span><span id="ClickHouse-913"><a href="#ClickHouse-913"><span class="linenos"> 913</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse-914"><a href="#ClickHouse-914"><span class="linenos"> 914</span></a>
</span><span id="ClickHouse-915"><a href="#ClickHouse-915"><span class="linenos"> 915</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">explicit</span><span class="o">=</span><span class="n">explicit</span><span class="p">)</span>
</span><span id="ClickHouse-916"><a href="#ClickHouse-916"><span class="linenos"> 916</span></a>
</span><span id="ClickHouse-917"><a href="#ClickHouse-917"><span class="linenos"> 917</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse-918"><a href="#ClickHouse-918"><span class="linenos"> 918</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span>
</span><span id="ClickHouse-919"><a href="#ClickHouse-919"><span class="linenos"> 919</span></a>
</span><span id="ClickHouse-920"><a href="#ClickHouse-920"><span class="linenos"> 920</span></a> <span class="c1"># Clickhouse allows &quot;SELECT &lt;expr&gt; [APPLY(func)] [...]]&quot; modifier</span>
</span><span id="ClickHouse-921"><a href="#ClickHouse-921"><span class="linenos"> 921</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="ClickHouse-922"><a href="#ClickHouse-922"><span class="linenos"> 922</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Apply</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
</span><span id="ClickHouse-923"><a href="#ClickHouse-923"><span class="linenos"> 923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span>
</span><span id="ClickHouse-924"><a href="#ClickHouse-924"><span class="linenos"> 924</span></a>
</span><span id="ClickHouse-925"><a href="#ClickHouse-925"><span class="linenos"> 925</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse-926"><a href="#ClickHouse-926"><span class="linenos"> 926</span></a>
</span><span id="ClickHouse-927"><a href="#ClickHouse-927"><span class="linenos"> 927</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
</span><span id="ClickHouse-928"><a href="#ClickHouse-928"><span class="linenos"> 928</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Columns</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">())</span>
</span><span id="ClickHouse-929"><a href="#ClickHouse-929"><span class="linenos"> 929</span></a>
</span><span id="ClickHouse-930"><a href="#ClickHouse-930"><span class="linenos"> 930</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;)&quot;</span><span class="p">,</span> <span class="s2">&quot;APPLY&quot;</span><span class="p">,</span> <span class="s2">&quot;(&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-931"><a href="#ClickHouse-931"><span class="linenos"> 931</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span>
</span><span id="ClickHouse-932"><a href="#ClickHouse-932"><span class="linenos"> 932</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Apply</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
</span><span id="ClickHouse-933"><a href="#ClickHouse-933"><span class="linenos"> 933</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse-934"><a href="#ClickHouse-934"><span class="linenos"> 934</span></a>
</span><span id="ClickHouse-935"><a href="#ClickHouse-935"><span class="linenos"> 935</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">]:</span>
</span><span id="ClickHouse-936"><a href="#ClickHouse-936"><span class="linenos"> 936</span></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(</span><span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">)</span>
</span><span id="ClickHouse-937"><a href="#ClickHouse-937"><span class="linenos"> 937</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
</span><span id="ClickHouse-938"><a href="#ClickHouse-938"><span class="linenos"> 938</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse-939"><a href="#ClickHouse-939"><span class="linenos"> 939</span></a>
</span><span id="ClickHouse-940"><a href="#ClickHouse-940"><span class="linenos"> 940</span></a> <span class="c1"># In Clickhouse &quot;SELECT * FROM VALUES (1, 2, 3)&quot; generates a table with a single column, in contrast</span>
</span><span id="ClickHouse-941"><a href="#ClickHouse-941"><span class="linenos"> 941</span></a> <span class="c1"># to other dialects. For this case, we canonicalize the values into a tuple-of-tuples AST if it&#39;s not already one.</span>
</span><span id="ClickHouse-942"><a href="#ClickHouse-942"><span class="linenos"> 942</span></a> <span class="c1"># In INSERT INTO statements the same clause actually references multiple columns (opposite semantics),</span>
</span><span id="ClickHouse-943"><a href="#ClickHouse-943"><span class="linenos"> 943</span></a> <span class="c1"># but the final result is not altered by the extra parentheses.</span>
</span><span id="ClickHouse-944"><a href="#ClickHouse-944"><span class="linenos"> 944</span></a> <span class="c1"># Note: Clickhouse allows VALUES([structure], value, ...) so the branch checks for the last expression</span>
</span><span id="ClickHouse-945"><a href="#ClickHouse-945"><span class="linenos"> 945</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="ClickHouse-946"><a href="#ClickHouse-946"><span class="linenos"> 946</span></a> <span class="k">if</span> <span class="n">values</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">):</span>
</span><span id="ClickHouse-947"><a href="#ClickHouse-947"><span class="linenos"> 947</span></a> <span class="n">value</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
</span><span id="ClickHouse-948"><a href="#ClickHouse-948"><span class="linenos"> 948</span></a> <span class="s2">&quot;expressions&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-949"><a href="#ClickHouse-949"><span class="linenos"> 949</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expr</span><span class="p">])</span> <span class="k">for</span> <span class="n">expr</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">],</span>
</span><span id="ClickHouse-950"><a href="#ClickHouse-950"><span class="linenos"> 950</span></a> <span class="p">)</span>
</span><span id="ClickHouse-951"><a href="#ClickHouse-951"><span class="linenos"> 951</span></a>
</span><span id="ClickHouse-952"><a href="#ClickHouse-952"><span class="linenos"> 952</span></a> <span class="k">return</span> <span class="n">value</span>
</span><span id="ClickHouse-953"><a href="#ClickHouse-953"><span class="linenos"> 953</span></a>
</span><span id="ClickHouse-954"><a href="#ClickHouse-954"><span class="linenos"> 954</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
</span><span id="ClickHouse-955"><a href="#ClickHouse-955"><span class="linenos"> 955</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-956"><a href="#ClickHouse-956"><span class="linenos"> 956</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;(&quot;</span><span class="p">,</span> <span class="s2">&quot;)&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-957"><a href="#ClickHouse-957"><span class="linenos"> 957</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-958"><a href="#ClickHouse-958"><span class="linenos"> 958</span></a> <span class="n">TABLESAMPLE_REQUIRES_PARENS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-959"><a href="#ClickHouse-959"><span class="linenos"> 959</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-960"><a href="#ClickHouse-960"><span class="linenos"> 960</span></a> <span class="n">TABLESAMPLE_KEYWORDS</span> <span class="o">=</span> <span class="s2">&quot;SAMPLE&quot;</span>
</span><span id="ClickHouse-961"><a href="#ClickHouse-961"><span class="linenos"> 961</span></a> <span class="n">LAST_DAY_SUPPORTS_DATE_PART</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-962"><a href="#ClickHouse-962"><span class="linenos"> 962</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-963"><a href="#ClickHouse-963"><span class="linenos"> 963</span></a> <span class="n">SUPPORTS_TO_NUMBER</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-964"><a href="#ClickHouse-964"><span class="linenos"> 964</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-965"><a href="#ClickHouse-965"><span class="linenos"> 965</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-966"><a href="#ClickHouse-966"><span class="linenos"> 966</span></a> <span class="n">GROUPINGS_SEP</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-967"><a href="#ClickHouse-967"><span class="linenos"> 967</span></a> <span class="n">SET_OP_MODIFIERS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-968"><a href="#ClickHouse-968"><span class="linenos"> 968</span></a> <span class="n">ARRAY_SIZE_NAME</span> <span class="o">=</span> <span class="s2">&quot;LENGTH&quot;</span>
</span><span id="ClickHouse-969"><a href="#ClickHouse-969"><span class="linenos"> 969</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse-970"><a href="#ClickHouse-970"><span class="linenos"> 970</span></a>
</span><span id="ClickHouse-971"><a href="#ClickHouse-971"><span class="linenos"> 971</span></a> <span class="n">STRING_TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-972"><a href="#ClickHouse-972"><span class="linenos"> 972</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-973"><a href="#ClickHouse-973"><span class="linenos"> 973</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-974"><a href="#ClickHouse-974"><span class="linenos"> 974</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-975"><a href="#ClickHouse-975"><span class="linenos"> 975</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-976"><a href="#ClickHouse-976"><span class="linenos"> 976</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-977"><a href="#ClickHouse-977"><span class="linenos"> 977</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-978"><a href="#ClickHouse-978"><span class="linenos"> 978</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-979"><a href="#ClickHouse-979"><span class="linenos"> 979</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-980"><a href="#ClickHouse-980"><span class="linenos"> 980</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-981"><a href="#ClickHouse-981"><span class="linenos"> 981</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-982"><a href="#ClickHouse-982"><span class="linenos"> 982</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-983"><a href="#ClickHouse-983"><span class="linenos"> 983</span></a> <span class="p">}</span>
</span><span id="ClickHouse-984"><a href="#ClickHouse-984"><span class="linenos"> 984</span></a>
</span><span id="ClickHouse-985"><a href="#ClickHouse-985"><span class="linenos"> 985</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-986"><a href="#ClickHouse-986"><span class="linenos"> 986</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
</span><span id="ClickHouse-987"><a href="#ClickHouse-987"><span class="linenos"> 987</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
</span><span id="ClickHouse-988"><a href="#ClickHouse-988"><span class="linenos"> 988</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
</span><span id="ClickHouse-989"><a href="#ClickHouse-989"><span class="linenos"> 989</span></a> <span class="p">}</span>
</span><span id="ClickHouse-990"><a href="#ClickHouse-990"><span class="linenos"> 990</span></a>
</span><span id="ClickHouse-991"><a href="#ClickHouse-991"><span class="linenos"> 991</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-992"><a href="#ClickHouse-992"><span class="linenos"> 992</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
</span><span id="ClickHouse-993"><a href="#ClickHouse-993"><span class="linenos"> 993</span></a> <span class="o">**</span><span class="n">STRING_TYPE_MAPPING</span><span class="p">,</span>
</span><span id="ClickHouse-994"><a href="#ClickHouse-994"><span class="linenos"> 994</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">:</span> <span class="s2">&quot;Array&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-995"><a href="#ClickHouse-995"><span class="linenos"> 995</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">&quot;Bool&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-996"><a href="#ClickHouse-996"><span class="linenos"> 996</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">&quot;Int64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-997"><a href="#ClickHouse-997"><span class="linenos"> 997</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE32</span><span class="p">:</span> <span class="s2">&quot;Date32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-998"><a href="#ClickHouse-998"><span class="linenos"> 998</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-999"><a href="#ClickHouse-999"><span class="linenos"> 999</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME2</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1000"><a href="#ClickHouse-1000"><span class="linenos">1000</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLDATETIME</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1001"><a href="#ClickHouse-1001"><span class="linenos">1001</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">:</span> <span class="s2">&quot;DateTime64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1002"><a href="#ClickHouse-1002"><span class="linenos">1002</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">&quot;Decimal&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1003"><a href="#ClickHouse-1003"><span class="linenos">1003</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL32</span><span class="p">:</span> <span class="s2">&quot;Decimal32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1004"><a href="#ClickHouse-1004"><span class="linenos">1004</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL64</span><span class="p">:</span> <span class="s2">&quot;Decimal64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1005"><a href="#ClickHouse-1005"><span class="linenos">1005</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL128</span><span class="p">:</span> <span class="s2">&quot;Decimal128&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1006"><a href="#ClickHouse-1006"><span class="linenos">1006</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL256</span><span class="p">:</span> <span class="s2">&quot;Decimal256&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1007"><a href="#ClickHouse-1007"><span class="linenos">1007</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1008"><a href="#ClickHouse-1008"><span class="linenos">1008</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1009"><a href="#ClickHouse-1009"><span class="linenos">1009</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;Float64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1010"><a href="#ClickHouse-1010"><span class="linenos">1010</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM</span><span class="p">:</span> <span class="s2">&quot;Enum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1011"><a href="#ClickHouse-1011"><span class="linenos">1011</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">:</span> <span class="s2">&quot;Enum8&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1012"><a href="#ClickHouse-1012"><span class="linenos">1012</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">:</span> <span class="s2">&quot;Enum16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1013"><a href="#ClickHouse-1013"><span class="linenos">1013</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">:</span> <span class="s2">&quot;FixedString&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1014"><a href="#ClickHouse-1014"><span class="linenos">1014</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;Float32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1015"><a href="#ClickHouse-1015"><span class="linenos">1015</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">:</span> <span class="s2">&quot;Int32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1016"><a href="#ClickHouse-1016"><span class="linenos">1016</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">:</span> <span class="s2">&quot;Int32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1017"><a href="#ClickHouse-1017"><span class="linenos">1017</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT128</span><span class="p">:</span> <span class="s2">&quot;Int128&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1018"><a href="#ClickHouse-1018"><span class="linenos">1018</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT256</span><span class="p">:</span> <span class="s2">&quot;Int256&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1019"><a href="#ClickHouse-1019"><span class="linenos">1019</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">:</span> <span class="s2">&quot;LowCardinality&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1020"><a href="#ClickHouse-1020"><span class="linenos">1020</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">:</span> <span class="s2">&quot;Map&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1021"><a href="#ClickHouse-1021"><span class="linenos">1021</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NESTED</span><span class="p">:</span> <span class="s2">&quot;Nested&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1022"><a href="#ClickHouse-1022"><span class="linenos">1022</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">&quot;Int16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1023"><a href="#ClickHouse-1023"><span class="linenos">1023</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">:</span> <span class="s2">&quot;Tuple&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1024"><a href="#ClickHouse-1024"><span class="linenos">1024</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">&quot;Int8&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1025"><a href="#ClickHouse-1025"><span class="linenos">1025</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">:</span> <span class="s2">&quot;UInt64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1026"><a href="#ClickHouse-1026"><span class="linenos">1026</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UInt32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1027"><a href="#ClickHouse-1027"><span class="linenos">1027</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT128</span><span class="p">:</span> <span class="s2">&quot;UInt128&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1028"><a href="#ClickHouse-1028"><span class="linenos">1028</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT256</span><span class="p">:</span> <span class="s2">&quot;UInt256&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1029"><a href="#ClickHouse-1029"><span class="linenos">1029</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">:</span> <span class="s2">&quot;UInt16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1030"><a href="#ClickHouse-1030"><span class="linenos">1030</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">:</span> <span class="s2">&quot;UInt8&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1031"><a href="#ClickHouse-1031"><span class="linenos">1031</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">IPV4</span><span class="p">:</span> <span class="s2">&quot;IPv4&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1032"><a href="#ClickHouse-1032"><span class="linenos">1032</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">IPV6</span><span class="p">:</span> <span class="s2">&quot;IPv6&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1033"><a href="#ClickHouse-1033"><span class="linenos">1033</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POINT</span><span class="p">:</span> <span class="s2">&quot;Point&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1034"><a href="#ClickHouse-1034"><span class="linenos">1034</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">RING</span><span class="p">:</span> <span class="s2">&quot;Ring&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1035"><a href="#ClickHouse-1035"><span class="linenos">1035</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">:</span> <span class="s2">&quot;LineString&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1036"><a href="#ClickHouse-1036"><span class="linenos">1036</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">:</span> <span class="s2">&quot;MultiLineString&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1037"><a href="#ClickHouse-1037"><span class="linenos">1037</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">:</span> <span class="s2">&quot;Polygon&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1038"><a href="#ClickHouse-1038"><span class="linenos">1038</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">:</span> <span class="s2">&quot;MultiPolygon&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1039"><a href="#ClickHouse-1039"><span class="linenos">1039</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">:</span> <span class="s2">&quot;AggregateFunction&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1040"><a href="#ClickHouse-1040"><span class="linenos">1040</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">:</span> <span class="s2">&quot;SimpleAggregateFunction&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1041"><a href="#ClickHouse-1041"><span class="linenos">1041</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DYNAMIC</span><span class="p">:</span> <span class="s2">&quot;Dynamic&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1042"><a href="#ClickHouse-1042"><span class="linenos">1042</span></a> <span class="p">}</span>
</span><span id="ClickHouse-1043"><a href="#ClickHouse-1043"><span class="linenos">1043</span></a>
</span><span id="ClickHouse-1044"><a href="#ClickHouse-1044"><span class="linenos">1044</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-1045"><a href="#ClickHouse-1045"><span class="linenos">1045</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
</span><span id="ClickHouse-1046"><a href="#ClickHouse-1046"><span class="linenos">1046</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;any&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1047"><a href="#ClickHouse-1047"><span class="linenos">1047</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;uniq&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1048"><a href="#ClickHouse-1048"><span class="linenos">1048</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arrayConcat&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1049"><a href="#ClickHouse-1049"><span class="linenos">1049</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;arrayFilter&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span>
</span><span id="ClickHouse-1050"><a href="#ClickHouse-1050"><span class="linenos">1050</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arraySum&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1051"><a href="#ClickHouse-1051"><span class="linenos">1051</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;argMax&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1052"><a href="#ClickHouse-1052"><span class="linenos">1052</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;argMin&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1053"><a href="#ClickHouse-1053"><span class="linenos">1053</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1054"><a href="#ClickHouse-1054"><span class="linenos">1054</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CastToStrType</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CAST&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1055"><a href="#ClickHouse-1055"><span class="linenos">1055</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;countIf&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1056"><a href="#ClickHouse-1056"><span class="linenos">1056</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse-1057"><a href="#ClickHouse-1057"><span class="linenos">1057</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CODEC(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s1">&#39;this&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1058"><a href="#ClickHouse-1058"><span class="linenos">1058</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse-1059"><a href="#ClickHouse-1059"><span class="linenos">1059</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="s1">&#39;MATERIALIZED&#39;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;persisted&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">&#39;ALIAS&#39;</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1060"><a href="#ClickHouse-1060"><span class="linenos">1060</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1061"><a href="#ClickHouse-1061"><span class="linenos">1061</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1062"><a href="#ClickHouse-1062"><span class="linenos">1062</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1063"><a href="#ClickHouse-1063"><span class="linenos">1063</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;toDate&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1064"><a href="#ClickHouse-1064"><span class="linenos">1064</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_SUB&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1065"><a href="#ClickHouse-1065"><span class="linenos">1065</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arrayJoin&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1066"><a href="#ClickHouse-1066"><span class="linenos">1066</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Final</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> FINAL&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1067"><a href="#ClickHouse-1067"><span class="linenos">1067</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;isNaN&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1068"><a href="#ClickHouse-1068"><span class="linenos">1068</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONCast</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">.:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;to&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1069"><a href="#ClickHouse-1069"><span class="linenos">1069</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="s2">&quot;JSONExtractString&quot;</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
</span><span id="ClickHouse-1070"><a href="#ClickHouse-1070"><span class="linenos">1070</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="s2">&quot;JSONExtractString&quot;</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
</span><span id="ClickHouse-1071"><a href="#ClickHouse-1071"><span class="linenos">1071</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span>
</span><span id="ClickHouse-1072"><a href="#ClickHouse-1072"><span class="linenos">1072</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1073"><a href="#ClickHouse-1073"><span class="linenos">1073</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">:</span> <span class="n">length_or_char_length_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1074"><a href="#ClickHouse-1074"><span class="linenos">1074</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1075"><a href="#ClickHouse-1075"><span class="linenos">1075</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Median</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;median&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1076"><a href="#ClickHouse-1076"><span class="linenos">1076</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Nullif</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;nullIf&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1077"><a href="#ClickHouse-1077"><span class="linenos">1077</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1078"><a href="#ClickHouse-1078"><span class="linenos">1078</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1079"><a href="#ClickHouse-1079"><span class="linenos">1079</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">:</span> <span class="n">_quantile_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1080"><a href="#ClickHouse-1080"><span class="linenos">1080</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">),</span>
</span><span id="ClickHouse-1081"><a href="#ClickHouse-1081"><span class="linenos">1081</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;randCanonical&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1082"><a href="#ClickHouse-1082"><span class="linenos">1082</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StartsWith</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;startsWith&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1083"><a href="#ClickHouse-1083"><span class="linenos">1083</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">strposition_sql</span><span class="p">(</span>
</span><span id="ClickHouse-1084"><a href="#ClickHouse-1084"><span class="linenos">1084</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse-1085"><a href="#ClickHouse-1085"><span class="linenos">1085</span></a> <span class="n">e</span><span class="p">,</span>
</span><span id="ClickHouse-1086"><a href="#ClickHouse-1086"><span class="linenos">1086</span></a> <span class="n">func_name</span><span class="o">=</span><span class="s2">&quot;POSITION&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1087"><a href="#ClickHouse-1087"><span class="linenos">1087</span></a> <span class="n">supports_position</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span><span id="ClickHouse-1088"><a href="#ClickHouse-1088"><span class="linenos">1088</span></a> <span class="n">use_ansi_position</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse-1089"><a href="#ClickHouse-1089"><span class="linenos">1089</span></a> <span class="p">),</span>
</span><span id="ClickHouse-1090"><a href="#ClickHouse-1090"><span class="linenos">1090</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="ClickHouse-1091"><a href="#ClickHouse-1091"><span class="linenos">1091</span></a> <span class="s2">&quot;formatDateTime&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;zone&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1092"><a href="#ClickHouse-1092"><span class="linenos">1092</span></a> <span class="p">),</span>
</span><span id="ClickHouse-1093"><a href="#ClickHouse-1093"><span class="linenos">1093</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">_timestrtotime_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1094"><a href="#ClickHouse-1094"><span class="linenos">1094</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;TIMESTAMP_ADD&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1095"><a href="#ClickHouse-1095"><span class="linenos">1095</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;TIMESTAMP_SUB&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1096"><a href="#ClickHouse-1096"><span class="linenos">1096</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1097"><a href="#ClickHouse-1097"><span class="linenos">1097</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;xor&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">),</span>
</span><span id="ClickHouse-1098"><a href="#ClickHouse-1098"><span class="linenos">1098</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MD5Digest</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MD5&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1099"><a href="#ClickHouse-1099"><span class="linenos">1099</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MD5</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;LOWER&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;HEX&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;MD5&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">))),</span>
</span><span id="ClickHouse-1100"><a href="#ClickHouse-1100"><span class="linenos">1100</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SHA</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SHA1&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1101"><a href="#ClickHouse-1101"><span class="linenos">1101</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">:</span> <span class="n">sha256_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1102"><a href="#ClickHouse-1102"><span class="linenos">1102</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
</span><span id="ClickHouse-1103"><a href="#ClickHouse-1103"><span class="linenos">1103</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="ClickHouse-1104"><a href="#ClickHouse-1104"><span class="linenos">1104</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">default_trim_type</span><span class="o">=</span><span class="s2">&quot;BOTH&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1105"><a href="#ClickHouse-1105"><span class="linenos">1105</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;varSamp&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1106"><a href="#ClickHouse-1106"><span class="linenos">1106</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">naked_property</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
</span><span id="ClickHouse-1107"><a href="#ClickHouse-1107"><span class="linenos">1107</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Stddev</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;stddevSamp&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1108"><a href="#ClickHouse-1108"><span class="linenos">1108</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Chr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CHAR&quot;</span><span class="p">),</span>
</span><span id="ClickHouse-1109"><a href="#ClickHouse-1109"><span class="linenos">1109</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lag</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="ClickHouse-1110"><a href="#ClickHouse-1110"><span class="linenos">1110</span></a> <span class="s2">&quot;lagInFrame&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;offset&quot;</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1111"><a href="#ClickHouse-1111"><span class="linenos">1111</span></a> <span class="p">),</span>
</span><span id="ClickHouse-1112"><a href="#ClickHouse-1112"><span class="linenos">1112</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lead</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="ClickHouse-1113"><a href="#ClickHouse-1113"><span class="linenos">1113</span></a> <span class="s2">&quot;leadInFrame&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;offset&quot;</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1114"><a href="#ClickHouse-1114"><span class="linenos">1114</span></a> <span class="p">),</span>
</span><span id="ClickHouse-1115"><a href="#ClickHouse-1115"><span class="linenos">1115</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="p">:</span> <span class="n">unsupported_args</span><span class="p">(</span><span class="s2">&quot;ins_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;del_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;sub_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;max_dist&quot;</span><span class="p">)(</span>
</span><span id="ClickHouse-1116"><a href="#ClickHouse-1116"><span class="linenos">1116</span></a> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;editDistance&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1117"><a href="#ClickHouse-1117"><span class="linenos">1117</span></a> <span class="p">),</span>
</span><span id="ClickHouse-1118"><a href="#ClickHouse-1118"><span class="linenos">1118</span></a> <span class="p">}</span>
</span><span id="ClickHouse-1119"><a href="#ClickHouse-1119"><span class="linenos">1119</span></a>
</span><span id="ClickHouse-1120"><a href="#ClickHouse-1120"><span class="linenos">1120</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-1121"><a href="#ClickHouse-1121"><span class="linenos">1121</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span>
</span><span id="ClickHouse-1122"><a href="#ClickHouse-1122"><span class="linenos">1122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span>
</span><span id="ClickHouse-1123"><a href="#ClickHouse-1123"><span class="linenos">1123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span>
</span><span id="ClickHouse-1124"><a href="#ClickHouse-1124"><span class="linenos">1124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span>
</span><span id="ClickHouse-1125"><a href="#ClickHouse-1125"><span class="linenos">1125</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span>
</span><span id="ClickHouse-1126"><a href="#ClickHouse-1126"><span class="linenos">1126</span></a> <span class="p">}</span>
</span><span id="ClickHouse-1127"><a href="#ClickHouse-1127"><span class="linenos">1127</span></a>
</span><span id="ClickHouse-1128"><a href="#ClickHouse-1128"><span class="linenos">1128</span></a> <span class="c1"># There&#39;s no list in docs, but it can be found in Clickhouse code</span>
</span><span id="ClickHouse-1129"><a href="#ClickHouse-1129"><span class="linenos">1129</span></a> <span class="c1"># see `ClickHouse/src/Parsers/ParserCreate*.cpp`</span>
</span><span id="ClickHouse-1130"><a href="#ClickHouse-1130"><span class="linenos">1130</span></a> <span class="n">ON_CLUSTER_TARGETS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-1131"><a href="#ClickHouse-1131"><span class="linenos">1131</span></a> <span class="s2">&quot;SCHEMA&quot;</span><span class="p">,</span> <span class="c1"># Transpiled CREATE SCHEMA may have OnCluster property set</span>
</span><span id="ClickHouse-1132"><a href="#ClickHouse-1132"><span class="linenos">1132</span></a> <span class="s2">&quot;DATABASE&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1133"><a href="#ClickHouse-1133"><span class="linenos">1133</span></a> <span class="s2">&quot;TABLE&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1134"><a href="#ClickHouse-1134"><span class="linenos">1134</span></a> <span class="s2">&quot;VIEW&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1135"><a href="#ClickHouse-1135"><span class="linenos">1135</span></a> <span class="s2">&quot;DICTIONARY&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1136"><a href="#ClickHouse-1136"><span class="linenos">1136</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1137"><a href="#ClickHouse-1137"><span class="linenos">1137</span></a> <span class="s2">&quot;FUNCTION&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1138"><a href="#ClickHouse-1138"><span class="linenos">1138</span></a> <span class="s2">&quot;NAMED COLLECTION&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1139"><a href="#ClickHouse-1139"><span class="linenos">1139</span></a> <span class="p">}</span>
</span><span id="ClickHouse-1140"><a href="#ClickHouse-1140"><span class="linenos">1140</span></a>
</span><span id="ClickHouse-1141"><a href="#ClickHouse-1141"><span class="linenos">1141</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/data-types/nullable</span>
</span><span id="ClickHouse-1142"><a href="#ClickHouse-1142"><span class="linenos">1142</span></a> <span class="n">NON_NULLABLE_TYPES</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse-1143"><a href="#ClickHouse-1143"><span class="linenos">1143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="ClickHouse-1144"><a href="#ClickHouse-1144"><span class="linenos">1144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span>
</span><span id="ClickHouse-1145"><a href="#ClickHouse-1145"><span class="linenos">1145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span>
</span><span id="ClickHouse-1146"><a href="#ClickHouse-1146"><span class="linenos">1146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POINT</span><span class="p">,</span>
</span><span id="ClickHouse-1147"><a href="#ClickHouse-1147"><span class="linenos">1147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">RING</span><span class="p">,</span>
</span><span id="ClickHouse-1148"><a href="#ClickHouse-1148"><span class="linenos">1148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse-1149"><a href="#ClickHouse-1149"><span class="linenos">1149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse-1150"><a href="#ClickHouse-1150"><span class="linenos">1150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">,</span>
</span><span id="ClickHouse-1151"><a href="#ClickHouse-1151"><span class="linenos">1151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">,</span>
</span><span id="ClickHouse-1152"><a href="#ClickHouse-1152"><span class="linenos">1152</span></a> <span class="p">}</span>
</span><span id="ClickHouse-1153"><a href="#ClickHouse-1153"><span class="linenos">1153</span></a>
</span><span id="ClickHouse-1154"><a href="#ClickHouse-1154"><span class="linenos">1154</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">strtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1155"><a href="#ClickHouse-1155"><span class="linenos">1155</span></a> <span class="n">strtodate_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1156"><a href="#ClickHouse-1156"><span class="linenos">1156</span></a>
</span><span id="ClickHouse-1157"><a href="#ClickHouse-1157"><span class="linenos">1157</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span>
</span><span id="ClickHouse-1158"><a href="#ClickHouse-1158"><span class="linenos">1158</span></a> <span class="c1"># StrToDate returns DATEs in other dialects (eg. postgres), so</span>
</span><span id="ClickHouse-1159"><a href="#ClickHouse-1159"><span class="linenos">1159</span></a> <span class="c1"># this branch aims to improve the transpilation to clickhouse</span>
</span><span id="ClickHouse-1160"><a href="#ClickHouse-1160"><span class="linenos">1160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;DATE&quot;</span><span class="p">))</span>
</span><span id="ClickHouse-1161"><a href="#ClickHouse-1161"><span class="linenos">1161</span></a>
</span><span id="ClickHouse-1162"><a href="#ClickHouse-1162"><span class="linenos">1162</span></a> <span class="k">return</span> <span class="n">strtodate_sql</span>
</span><span id="ClickHouse-1163"><a href="#ClickHouse-1163"><span class="linenos">1163</span></a>
</span><span id="ClickHouse-1164"><a href="#ClickHouse-1164"><span class="linenos">1164</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1165"><a href="#ClickHouse-1165"><span class="linenos">1165</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="ClickHouse-1166"><a href="#ClickHouse-1166"><span class="linenos">1166</span></a>
</span><span id="ClickHouse-1167"><a href="#ClickHouse-1167"><span class="linenos">1167</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="s2">&quot;datetime&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-1168"><a href="#ClickHouse-1168"><span class="linenos">1168</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-1169"><a href="#ClickHouse-1169"><span class="linenos">1169</span></a>
</span><span id="ClickHouse-1170"><a href="#ClickHouse-1170"><span class="linenos">1170</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="n">safe_prefix</span><span class="p">)</span>
</span><span id="ClickHouse-1171"><a href="#ClickHouse-1171"><span class="linenos">1171</span></a>
</span><span id="ClickHouse-1172"><a href="#ClickHouse-1172"><span class="linenos">1172</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1173"><a href="#ClickHouse-1173"><span class="linenos">1173</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span>
</span><span id="ClickHouse-1174"><a href="#ClickHouse-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dtype</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="ClickHouse-1175"><a href="#ClickHouse-1175"><span class="linenos">1175</span></a> <span class="c1"># Casting x into Nullable(T) appears to behave similarly to TRY_CAST(x AS T)</span>
</span><span id="ClickHouse-1176"><a href="#ClickHouse-1176"><span class="linenos">1176</span></a> <span class="n">dtype</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-1177"><a href="#ClickHouse-1177"><span class="linenos">1177</span></a>
</span><span id="ClickHouse-1178"><a href="#ClickHouse-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1179"><a href="#ClickHouse-1179"><span class="linenos">1179</span></a>
</span><span id="ClickHouse-1180"><a href="#ClickHouse-1180"><span class="linenos">1180</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_jsonpathsubscript_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1181"><a href="#ClickHouse-1181"><span class="linenos">1181</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-1182"><a href="#ClickHouse-1182"><span class="linenos">1182</span></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_int</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="ClickHouse-1183"><a href="#ClickHouse-1183"><span class="linenos">1183</span></a>
</span><span id="ClickHouse-1184"><a href="#ClickHouse-1184"><span class="linenos">1184</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1185"><a href="#ClickHouse-1185"><span class="linenos">1185</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1186"><a href="#ClickHouse-1186"><span class="linenos">1186</span></a>
</span><span id="ClickHouse-1187"><a href="#ClickHouse-1187"><span class="linenos">1187</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_any_to_has</span><span class="p">(</span>
</span><span id="ClickHouse-1188"><a href="#ClickHouse-1188"><span class="linenos">1188</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse-1189"><a href="#ClickHouse-1189"><span class="linenos">1189</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span>
</span><span id="ClickHouse-1190"><a href="#ClickHouse-1190"><span class="linenos">1190</span></a> <span class="n">default</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">],</span> <span class="nb">str</span><span class="p">],</span>
</span><span id="ClickHouse-1191"><a href="#ClickHouse-1191"><span class="linenos">1191</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1192"><a href="#ClickHouse-1192"><span class="linenos">1192</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1193"><a href="#ClickHouse-1193"><span class="linenos">1193</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span>
</span><span id="ClickHouse-1194"><a href="#ClickHouse-1194"><span class="linenos">1194</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">left</span>
</span><span id="ClickHouse-1195"><a href="#ClickHouse-1195"><span class="linenos">1195</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">right</span>
</span><span id="ClickHouse-1196"><a href="#ClickHouse-1196"><span class="linenos">1196</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span>
</span><span id="ClickHouse-1197"><a href="#ClickHouse-1197"><span class="linenos">1197</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">right</span>
</span><span id="ClickHouse-1198"><a href="#ClickHouse-1198"><span class="linenos">1198</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">left</span>
</span><span id="ClickHouse-1199"><a href="#ClickHouse-1199"><span class="linenos">1199</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-1200"><a href="#ClickHouse-1200"><span class="linenos">1200</span></a> <span class="k">return</span> <span class="n">default</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1201"><a href="#ClickHouse-1201"><span class="linenos">1201</span></a>
</span><span id="ClickHouse-1202"><a href="#ClickHouse-1202"><span class="linenos">1202</span></a> <span class="k">return</span> <span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;has&quot;</span><span class="p">,</span> <span class="n">arr</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">(),</span> <span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-1203"><a href="#ClickHouse-1203"><span class="linenos">1203</span></a>
</span><span id="ClickHouse-1204"><a href="#ClickHouse-1204"><span class="linenos">1204</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1205"><a href="#ClickHouse-1205"><span class="linenos">1205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">eq_sql</span><span class="p">)</span>
</span><span id="ClickHouse-1206"><a href="#ClickHouse-1206"><span class="linenos">1206</span></a>
</span><span id="ClickHouse-1207"><a href="#ClickHouse-1207"><span class="linenos">1207</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1208"><a href="#ClickHouse-1208"><span class="linenos">1208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">neq_sql</span><span class="p">,</span> <span class="s2">&quot;NOT &quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1209"><a href="#ClickHouse-1209"><span class="linenos">1209</span></a>
</span><span id="ClickHouse-1210"><a href="#ClickHouse-1210"><span class="linenos">1210</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">regexpilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1211"><a href="#ClickHouse-1211"><span class="linenos">1211</span></a> <span class="c1"># Manually add a flag to make the search case-insensitive</span>
</span><span id="ClickHouse-1212"><a href="#ClickHouse-1212"><span class="linenos">1212</span></a> <span class="n">regex</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;CONCAT&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;(?i)&#39;&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1213"><a href="#ClickHouse-1213"><span class="linenos">1213</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">regex</span><span class="p">)</span>
</span><span id="ClickHouse-1214"><a href="#ClickHouse-1214"><span class="linenos">1214</span></a>
</span><span id="ClickHouse-1215"><a href="#ClickHouse-1215"><span class="linenos">1215</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1216"><a href="#ClickHouse-1216"><span class="linenos">1216</span></a> <span class="c1"># String is the standard ClickHouse type, every other variant is just an alias.</span>
</span><span id="ClickHouse-1217"><a href="#ClickHouse-1217"><span class="linenos">1217</span></a> <span class="c1"># Additionally, any supplied length parameter will be ignored.</span>
</span><span id="ClickHouse-1218"><a href="#ClickHouse-1218"><span class="linenos">1218</span></a> <span class="c1">#</span>
</span><span id="ClickHouse-1219"><a href="#ClickHouse-1219"><span class="linenos">1219</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/data-types/string</span>
</span><span id="ClickHouse-1220"><a href="#ClickHouse-1220"><span class="linenos">1220</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_TYPE_MAPPING</span><span class="p">:</span>
</span><span id="ClickHouse-1221"><a href="#ClickHouse-1221"><span class="linenos">1221</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="s2">&quot;String&quot;</span>
</span><span id="ClickHouse-1222"><a href="#ClickHouse-1222"><span class="linenos">1222</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-1223"><a href="#ClickHouse-1223"><span class="linenos">1223</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1224"><a href="#ClickHouse-1224"><span class="linenos">1224</span></a>
</span><span id="ClickHouse-1225"><a href="#ClickHouse-1225"><span class="linenos">1225</span></a> <span class="c1"># This section changes the type to `Nullable(...)` if the following conditions hold:</span>
</span><span id="ClickHouse-1226"><a href="#ClickHouse-1226"><span class="linenos">1226</span></a> <span class="c1"># - It&#39;s marked as nullable - this ensures we won&#39;t wrap ClickHouse types with `Nullable`</span>
</span><span id="ClickHouse-1227"><a href="#ClickHouse-1227"><span class="linenos">1227</span></a> <span class="c1"># and change their semantics</span>
</span><span id="ClickHouse-1228"><a href="#ClickHouse-1228"><span class="linenos">1228</span></a> <span class="c1"># - It&#39;s not the key type of a `Map`. This is because ClickHouse enforces the following</span>
</span><span id="ClickHouse-1229"><a href="#ClickHouse-1229"><span class="linenos">1229</span></a> <span class="c1"># constraint: &quot;Type of Map key must be a type, that can be represented by integer or</span>
</span><span id="ClickHouse-1230"><a href="#ClickHouse-1230"><span class="linenos">1230</span></a> <span class="c1"># String or FixedString (possibly LowCardinality) or UUID or IPv6&quot;</span>
</span><span id="ClickHouse-1231"><a href="#ClickHouse-1231"><span class="linenos">1231</span></a> <span class="c1"># - It&#39;s not a composite type, e.g. `Nullable(Array(...))` is not a valid type</span>
</span><span id="ClickHouse-1232"><a href="#ClickHouse-1232"><span class="linenos">1232</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
</span><span id="ClickHouse-1233"><a href="#ClickHouse-1233"><span class="linenos">1233</span></a> <span class="n">nullable</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1234"><a href="#ClickHouse-1234"><span class="linenos">1234</span></a> <span class="k">if</span> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">True</span> <span class="ow">or</span> <span class="p">(</span>
</span><span id="ClickHouse-1235"><a href="#ClickHouse-1235"><span class="linenos">1235</span></a> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">None</span>
</span><span id="ClickHouse-1236"><a href="#ClickHouse-1236"><span class="linenos">1236</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span>
</span><span id="ClickHouse-1237"><a href="#ClickHouse-1237"><span class="linenos">1237</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span>
</span><span id="ClickHouse-1238"><a href="#ClickHouse-1238"><span class="linenos">1238</span></a> <span class="ow">and</span> <span class="n">parent</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-1239"><a href="#ClickHouse-1239"><span class="linenos">1239</span></a> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">index</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
</span><span id="ClickHouse-1240"><a href="#ClickHouse-1240"><span class="linenos">1240</span></a> <span class="p">)</span>
</span><span id="ClickHouse-1241"><a href="#ClickHouse-1241"><span class="linenos">1241</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-1242"><a href="#ClickHouse-1242"><span class="linenos">1242</span></a> <span class="p">):</span>
</span><span id="ClickHouse-1243"><a href="#ClickHouse-1243"><span class="linenos">1243</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Nullable(</span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">)&quot;</span>
</span><span id="ClickHouse-1244"><a href="#ClickHouse-1244"><span class="linenos">1244</span></a>
</span><span id="ClickHouse-1245"><a href="#ClickHouse-1245"><span class="linenos">1245</span></a> <span class="k">return</span> <span class="n">dtype</span>
</span><span id="ClickHouse-1246"><a href="#ClickHouse-1246"><span class="linenos">1246</span></a>
</span><span id="ClickHouse-1247"><a href="#ClickHouse-1247"><span class="linenos">1247</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1248"><a href="#ClickHouse-1248"><span class="linenos">1248</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scalar&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-1249"><a href="#ClickHouse-1249"><span class="linenos">1249</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1250"><a href="#ClickHouse-1250"><span class="linenos">1250</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1251"><a href="#ClickHouse-1251"><span class="linenos">1251</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1252"><a href="#ClickHouse-1252"><span class="linenos">1252</span></a>
</span><span id="ClickHouse-1253"><a href="#ClickHouse-1253"><span class="linenos">1253</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cte_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1254"><a href="#ClickHouse-1254"><span class="linenos">1254</span></a>
</span><span id="ClickHouse-1255"><a href="#ClickHouse-1255"><span class="linenos">1255</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">after_limit_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
</span><span id="ClickHouse-1256"><a href="#ClickHouse-1256"><span class="linenos">1256</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">after_limit_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span>
</span><span id="ClickHouse-1257"><a href="#ClickHouse-1257"><span class="linenos">1257</span></a> <span class="p">(</span>
</span><span id="ClickHouse-1258"><a href="#ClickHouse-1258"><span class="linenos">1258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;SETTINGS &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;settings&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse-1259"><a href="#ClickHouse-1259"><span class="linenos">1259</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;settings&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1260"><a href="#ClickHouse-1260"><span class="linenos">1260</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1261"><a href="#ClickHouse-1261"><span class="linenos">1261</span></a> <span class="p">),</span>
</span><span id="ClickHouse-1262"><a href="#ClickHouse-1262"><span class="linenos">1262</span></a> <span class="p">(</span>
</span><span id="ClickHouse-1263"><a href="#ClickHouse-1263"><span class="linenos">1263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;FORMAT &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1264"><a href="#ClickHouse-1264"><span class="linenos">1264</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1265"><a href="#ClickHouse-1265"><span class="linenos">1265</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1266"><a href="#ClickHouse-1266"><span class="linenos">1266</span></a> <span class="p">),</span>
</span><span id="ClickHouse-1267"><a href="#ClickHouse-1267"><span class="linenos">1267</span></a> <span class="p">]</span>
</span><span id="ClickHouse-1268"><a href="#ClickHouse-1268"><span class="linenos">1268</span></a>
</span><span id="ClickHouse-1269"><a href="#ClickHouse-1269"><span class="linenos">1269</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1270"><a href="#ClickHouse-1270"><span class="linenos">1270</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">{{</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;kind&#39;</span><span class="p">)</span><span class="si">}</span><span class="se">}}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1271"><a href="#ClickHouse-1271"><span class="linenos">1271</span></a>
</span><span id="ClickHouse-1272"><a href="#ClickHouse-1272"><span class="linenos">1272</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">oncluster_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1273"><a href="#ClickHouse-1273"><span class="linenos">1273</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ON CLUSTER </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1274"><a href="#ClickHouse-1274"><span class="linenos">1274</span></a>
</span><span id="ClickHouse-1275"><a href="#ClickHouse-1275"><span class="linenos">1275</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">createable_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> <span class="n">locations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1276"><a href="#ClickHouse-1276"><span class="linenos">1276</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ON_CLUSTER_TARGETS</span> <span class="ow">and</span> <span class="n">locations</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
</span><span id="ClickHouse-1277"><a href="#ClickHouse-1277"><span class="linenos">1277</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span>
</span><span id="ClickHouse-1278"><a href="#ClickHouse-1278"><span class="linenos">1278</span></a> <span class="p">):</span>
</span><span id="ClickHouse-1279"><a href="#ClickHouse-1279"><span class="linenos">1279</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
</span><span id="ClickHouse-1280"><a href="#ClickHouse-1280"><span class="linenos">1280</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span><span class="p">,</span>
</span><span id="ClickHouse-1281"><a href="#ClickHouse-1281"><span class="linenos">1281</span></a> <span class="s2">&quot;this&quot;</span><span class="p">,</span>
</span><span id="ClickHouse-1282"><a href="#ClickHouse-1282"><span class="linenos">1282</span></a> <span class="p">)</span>
</span><span id="ClickHouse-1283"><a href="#ClickHouse-1283"><span class="linenos">1283</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
</span><span id="ClickHouse-1284"><a href="#ClickHouse-1284"><span class="linenos">1284</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">locations</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]]</span>
</span><span id="ClickHouse-1285"><a href="#ClickHouse-1285"><span class="linenos">1285</span></a> <span class="p">)</span>
</span><span id="ClickHouse-1286"><a href="#ClickHouse-1286"><span class="linenos">1286</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema_columns_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse-1287"><a href="#ClickHouse-1287"><span class="linenos">1287</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this_schema</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1288"><a href="#ClickHouse-1288"><span class="linenos">1288</span></a>
</span><span id="ClickHouse-1289"><a href="#ClickHouse-1289"><span class="linenos">1289</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this_name</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_properties</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1290"><a href="#ClickHouse-1290"><span class="linenos">1290</span></a>
</span><span id="ClickHouse-1291"><a href="#ClickHouse-1291"><span class="linenos">1291</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">createable_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">locations</span><span class="p">)</span>
</span><span id="ClickHouse-1292"><a href="#ClickHouse-1292"><span class="linenos">1292</span></a>
</span><span id="ClickHouse-1293"><a href="#ClickHouse-1293"><span class="linenos">1293</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">create_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1294"><a href="#ClickHouse-1294"><span class="linenos">1294</span></a> <span class="c1"># The comment property comes last in CTAS statements, i.e. after the query</span>
</span><span id="ClickHouse-1295"><a href="#ClickHouse-1295"><span class="linenos">1295</span></a> <span class="n">query</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
</span><span id="ClickHouse-1296"><a href="#ClickHouse-1296"><span class="linenos">1296</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span>
</span><span id="ClickHouse-1297"><a href="#ClickHouse-1297"><span class="linenos">1297</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span>
</span><span id="ClickHouse-1298"><a href="#ClickHouse-1298"><span class="linenos">1298</span></a> <span class="k">if</span> <span class="n">comment_prop</span><span class="p">:</span>
</span><span id="ClickHouse-1299"><a href="#ClickHouse-1299"><span class="linenos">1299</span></a> <span class="n">comment_prop</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="ClickHouse-1300"><a href="#ClickHouse-1300"><span class="linenos">1300</span></a> <span class="n">query</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">query</span><span class="p">))</span>
</span><span id="ClickHouse-1301"><a href="#ClickHouse-1301"><span class="linenos">1301</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-1302"><a href="#ClickHouse-1302"><span class="linenos">1302</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse-1303"><a href="#ClickHouse-1303"><span class="linenos">1303</span></a>
</span><span id="ClickHouse-1304"><a href="#ClickHouse-1304"><span class="linenos">1304</span></a> <span class="n">create_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">create_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1305"><a href="#ClickHouse-1305"><span class="linenos">1305</span></a>
</span><span id="ClickHouse-1306"><a href="#ClickHouse-1306"><span class="linenos">1306</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comment_prop</span><span class="p">)</span>
</span><span id="ClickHouse-1307"><a href="#ClickHouse-1307"><span class="linenos">1307</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">comment_sql</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1308"><a href="#ClickHouse-1308"><span class="linenos">1308</span></a>
</span><span id="ClickHouse-1309"><a href="#ClickHouse-1309"><span class="linenos">1309</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">create_sql</span><span class="si">}{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1310"><a href="#ClickHouse-1310"><span class="linenos">1310</span></a>
</span><span id="ClickHouse-1311"><a href="#ClickHouse-1311"><span class="linenos">1311</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">prewhere_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1312"><a href="#ClickHouse-1312"><span class="linenos">1312</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">))</span>
</span><span id="ClickHouse-1313"><a href="#ClickHouse-1313"><span class="linenos">1313</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">&#39;PREWHERE&#39;</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1314"><a href="#ClickHouse-1314"><span class="linenos">1314</span></a>
</span><span id="ClickHouse-1315"><a href="#ClickHouse-1315"><span class="linenos">1315</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">indexcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1316"><a href="#ClickHouse-1316"><span class="linenos">1316</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1317"><a href="#ClickHouse-1317"><span class="linenos">1317</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1318"><a href="#ClickHouse-1318"><span class="linenos">1318</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1319"><a href="#ClickHouse-1319"><span class="linenos">1319</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">expr</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expr</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1320"><a href="#ClickHouse-1320"><span class="linenos">1320</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;index_type&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1321"><a href="#ClickHouse-1321"><span class="linenos">1321</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; TYPE </span><span class="si">{</span><span class="n">index_type</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">index_type</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1322"><a href="#ClickHouse-1322"><span class="linenos">1322</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;granularity&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1323"><a href="#ClickHouse-1323"><span class="linenos">1323</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; GRANULARITY </span><span class="si">{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">granularity</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse-1324"><a href="#ClickHouse-1324"><span class="linenos">1324</span></a>
</span><span id="ClickHouse-1325"><a href="#ClickHouse-1325"><span class="linenos">1325</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;INDEX</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expr</span><span class="si">}{</span><span class="n">index_type</span><span class="si">}{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1326"><a href="#ClickHouse-1326"><span class="linenos">1326</span></a>
</span><span id="ClickHouse-1327"><a href="#ClickHouse-1327"><span class="linenos">1327</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1328"><a href="#ClickHouse-1328"><span class="linenos">1328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PARTITION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1329"><a href="#ClickHouse-1329"><span class="linenos">1329</span></a>
</span><span id="ClickHouse-1330"><a href="#ClickHouse-1330"><span class="linenos">1330</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partitionid_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionId</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1331"><a href="#ClickHouse-1331"><span class="linenos">1331</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ID </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1332"><a href="#ClickHouse-1332"><span class="linenos">1332</span></a>
</span><span id="ClickHouse-1333"><a href="#ClickHouse-1333"><span class="linenos">1333</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">replacepartition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ReplacePartition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1334"><a href="#ClickHouse-1334"><span class="linenos">1334</span></a> <span class="k">return</span> <span class="p">(</span>
</span><span id="ClickHouse-1335"><a href="#ClickHouse-1335"><span class="linenos">1335</span></a> <span class="sa">f</span><span class="s2">&quot;REPLACE </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;source&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1336"><a href="#ClickHouse-1336"><span class="linenos">1336</span></a> <span class="p">)</span>
</span><span id="ClickHouse-1337"><a href="#ClickHouse-1337"><span class="linenos">1337</span></a>
</span><span id="ClickHouse-1338"><a href="#ClickHouse-1338"><span class="linenos">1338</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">projectiondef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1339"><a href="#ClickHouse-1339"><span class="linenos">1339</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PROJECTION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse-1340"><a href="#ClickHouse-1340"><span class="linenos">1340</span></a>
</span><span id="ClickHouse-1341"><a href="#ClickHouse-1341"><span class="linenos">1341</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1342"><a href="#ClickHouse-1342"><span class="linenos">1342</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">is_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1343"><a href="#ClickHouse-1343"><span class="linenos">1343</span></a>
</span><span id="ClickHouse-1344"><a href="#ClickHouse-1344"><span class="linenos">1344</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">):</span>
</span><span id="ClickHouse-1345"><a href="#ClickHouse-1345"><span class="linenos">1345</span></a> <span class="c1"># value IS NOT NULL -&gt; NOT (value IS NULL)</span>
</span><span id="ClickHouse-1346"><a href="#ClickHouse-1346"><span class="linenos">1346</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">is_sql</span><span class="p">)</span>
</span><span id="ClickHouse-1347"><a href="#ClickHouse-1347"><span class="linenos">1347</span></a>
</span><span id="ClickHouse-1348"><a href="#ClickHouse-1348"><span class="linenos">1348</span></a> <span class="k">return</span> <span class="n">is_sql</span>
</span><span id="ClickHouse-1349"><a href="#ClickHouse-1349"><span class="linenos">1349</span></a>
</span><span id="ClickHouse-1350"><a href="#ClickHouse-1350"><span class="linenos">1350</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1351"><a href="#ClickHouse-1351"><span class="linenos">1351</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">in_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1352"><a href="#ClickHouse-1352"><span class="linenos">1352</span></a>
</span><span id="ClickHouse-1353"><a href="#ClickHouse-1353"><span class="linenos">1353</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-1354"><a href="#ClickHouse-1354"><span class="linenos">1354</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="n">in_sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;GLOBAL IN&quot;</span><span class="p">,</span> <span class="s2">&quot;GLOBAL NOT IN&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="ClickHouse-1355"><a href="#ClickHouse-1355"><span class="linenos">1355</span></a>
</span><span id="ClickHouse-1356"><a href="#ClickHouse-1356"><span class="linenos">1356</span></a> <span class="k">return</span> <span class="n">in_sql</span>
</span><span id="ClickHouse-1357"><a href="#ClickHouse-1357"><span class="linenos">1357</span></a>
</span><span id="ClickHouse-1358"><a href="#ClickHouse-1358"><span class="linenos">1358</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1359"><a href="#ClickHouse-1359"><span class="linenos">1359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="ClickHouse-1360"><a href="#ClickHouse-1360"><span class="linenos">1360</span></a> <span class="c1"># let `GLOBAL IN` child interpose `NOT`</span>
</span><span id="ClickHouse-1361"><a href="#ClickHouse-1361"><span class="linenos">1361</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1362"><a href="#ClickHouse-1362"><span class="linenos">1362</span></a>
</span><span id="ClickHouse-1363"><a href="#ClickHouse-1363"><span class="linenos">1363</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">not_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse-1364"><a href="#ClickHouse-1364"><span class="linenos">1364</span></a>
</span><span id="ClickHouse-1365"><a href="#ClickHouse-1365"><span class="linenos">1365</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">values_as_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse-1366"><a href="#ClickHouse-1366"><span class="linenos">1366</span></a> <span class="c1"># If the VALUES clause contains tuples of expressions, we need to treat it</span>
</span><span id="ClickHouse-1367"><a href="#ClickHouse-1367"><span class="linenos">1367</span></a> <span class="c1"># as a table since Clickhouse will automatically alias it as such.</span>
</span><span id="ClickHouse-1368"><a href="#ClickHouse-1368"><span class="linenos">1368</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse-1369"><a href="#ClickHouse-1369"><span class="linenos">1369</span></a>
</span><span id="ClickHouse-1370"><a href="#ClickHouse-1370"><span class="linenos">1370</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="ClickHouse-1371"><a href="#ClickHouse-1371"><span class="linenos">1371</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="ClickHouse-1372"><a href="#ClickHouse-1372"><span class="linenos">1372</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="nb">any</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">)</span>
</span><span id="ClickHouse-1373"><a href="#ClickHouse-1373"><span class="linenos">1373</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse-1374"><a href="#ClickHouse-1374"><span class="linenos">1374</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse-1375"><a href="#ClickHouse-1375"><span class="linenos">1375</span></a>
</span><span id="ClickHouse-1376"><a href="#ClickHouse-1376"><span class="linenos">1376</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">values_as_table</span><span class="o">=</span><span class="n">values_as_table</span><span class="p">)</span>
</span></pre></div>
<div id="ClickHouse.NORMALIZE_FUNCTIONS" class="classattr">
<div class="attr variable">
<span class="name">NORMALIZE_FUNCTIONS</span><span class="annotation">: bool | str</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.NORMALIZE_FUNCTIONS"></a>
<div class="docstring"><p>Determines how function names are going to be normalized.</p>
<h6 id="possible-values">Possible values:</h6>
<blockquote>
<p>"upper" or True: Convert names to uppercase.
"lower": Convert names to lowercase.
False: Disables function name normalization.</p>
</blockquote>
</div>
</div>
<div id="ClickHouse.NULL_ORDERING" class="classattr">
<div class="attr variable">
<span class="name">NULL_ORDERING</span> =
<span class="default_value">&#39;nulls_are_last&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.NULL_ORDERING"></a>
<div class="docstring"><p>Default <code>NULL</code> ordering method to use if not explicitly set.
Possible values: <code>"nulls_are_small"</code>, <code>"nulls_are_large"</code>, <code>"nulls_are_last"</code></p>
</div>
</div>
<div id="ClickHouse.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.SUPPORTS_USER_DEFINED_TYPES"></a>
<div class="docstring"><p>Whether user-defined data types are supported.</p>
</div>
</div>
<div id="ClickHouse.SAFE_DIVISION" class="classattr">
<div class="attr variable">
<span class="name">SAFE_DIVISION</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.SAFE_DIVISION"></a>
<div class="docstring"><p>Whether division by zero throws an error (<code>False</code>) or returns NULL (<code>True</code>).</p>
</div>
</div>
<div id="ClickHouse.LOG_BASE_FIRST" class="classattr">
<div class="attr variable">
<span class="name">LOG_BASE_FIRST</span><span class="annotation">: Optional[bool]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#ClickHouse.LOG_BASE_FIRST"></a>
<div class="docstring"><p>Whether the base comes first in the <code>LOG</code> function.
Possible values: <code>True</code>, <code>False</code>, <code>None</code> (two arguments are not supported by <code>LOG</code>)</p>
</div>
</div>
<div id="ClickHouse.FORCE_EARLY_ALIAS_REF_EXPANSION" class="classattr">
<div class="attr variable">
<span class="name">FORCE_EARLY_ALIAS_REF_EXPANSION</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.FORCE_EARLY_ALIAS_REF_EXPANSION"></a>
<div class="docstring"><p>Whether alias reference expansion (_expand_alias_refs()) should run before column qualification (_qualify_columns()).</p>
<h6 id="for-example">For example:</h6>
<blockquote>
<p>WITH data AS (
SELECT
1 AS id,
2 AS my_id
)
SELECT
id AS my_id
FROM
data
WHERE
my_id = 1
GROUP BY
my_id,
HAVING
my_id = 1</p>
</blockquote>
<p>In most dialects, "my_id" would refer to "data.my_id" across the query, except:
- BigQuery, which will forward the alias to GROUP BY + HAVING clauses i.e
it resolves to "WHERE my_id = 1 GROUP BY id HAVING id = 1"
- Clickhouse, which will forward the alias across the query i.e it resolves
to "WHERE id = 1 GROUP BY id HAVING id = 1"</p>
</div>
</div>
<div id="ClickHouse.PRESERVE_ORIGINAL_NAMES" class="classattr">
<div class="attr variable">
<span class="name">PRESERVE_ORIGINAL_NAMES</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.PRESERVE_ORIGINAL_NAMES"></a>
<div class="docstring"><p>Whether the name of the function should be preserved inside the node's metadata,
can be useful for roundtripping deprecated vs new functions that share an AST node
e.g JSON_VALUE vs JSON_EXTRACT_SCALAR in BigQuery</p>
</div>
</div>
<div id="ClickHouse.NUMBERS_CAN_BE_UNDERSCORE_SEPARATED" class="classattr">
<div class="attr variable">
<span class="name">NUMBERS_CAN_BE_UNDERSCORE_SEPARATED</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.NUMBERS_CAN_BE_UNDERSCORE_SEPARATED"></a>
<div class="docstring"><p>Whether number literals can include underscores for better readability</p>
</div>
</div>
<div id="ClickHouse.IDENTIFIERS_CAN_START_WITH_DIGIT" class="classattr">
<div class="attr variable">
<span class="name">IDENTIFIERS_CAN_START_WITH_DIGIT</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.IDENTIFIERS_CAN_START_WITH_DIGIT"></a>
<div class="docstring"><p>Whether an unquoted identifier can start with a digit.</p>
</div>
</div>
<div id="ClickHouse.HEX_STRING_IS_INTEGER_TYPE" class="classattr">
<div class="attr variable">
<span class="name">HEX_STRING_IS_INTEGER_TYPE</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.HEX_STRING_IS_INTEGER_TYPE"></a>
<div class="docstring"><p>Whether hex strings such as x'CC' evaluate to integer or binary/blob type</p>
</div>
</div>
<div id="ClickHouse.NORMALIZATION_STRATEGY" class="classattr">
<div class="attr variable">
<span class="name">NORMALIZATION_STRATEGY</span> =
<span class="default_value">&lt;NormalizationStrategy.CASE_SENSITIVE: &#39;CASE_SENSITIVE&#39;&gt;</span>
</div>
<a class="headerlink" href="#ClickHouse.NORMALIZATION_STRATEGY"></a>
<div class="docstring"><p>Specifies the strategy according to which identifiers should be normalized.</p>
</div>
</div>
<div id="ClickHouse.UNESCAPED_SEQUENCES" class="classattr">
<div class="attr variable">
<span class="name">UNESCAPED_SEQUENCES</span> =
<input id="ClickHouse.UNESCAPED_SEQUENCES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.UNESCAPED_SEQUENCES-view-value"></label><span class="default_value">{&#39;\\a&#39;: &#39;\x07&#39;, &#39;\\b&#39;: &#39;\x08&#39;, &#39;\\f&#39;: &#39;\x0c&#39;, &#39;\\n&#39;: &#39;\n&#39;, &#39;\\r&#39;: &#39;\r&#39;, &#39;\\t&#39;: &#39;\t&#39;, &#39;\\v&#39;: &#39;\x0b&#39;, &#39;\\\\&#39;: &#39;\\&#39;, &#39;\\0&#39;: &#39;\x00&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.UNESCAPED_SEQUENCES"></a>
<div class="docstring"><p>Mapping of an escaped sequence (<code>\n</code>) to its unescaped version (<code>
</code>).</p>
</div>
</div>
<div id="ClickHouse.CREATABLE_KIND_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">CREATABLE_KIND_MAPPING</span> =
<span class="default_value">{&#39;DATABASE&#39;: &#39;SCHEMA&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.CREATABLE_KIND_MAPPING"></a>
<div class="docstring"><p>Helper for dialects that use a different name for the same creatable kind. For example, the Clickhouse
equivalent of CREATE SCHEMA is CREATE DATABASE.</p>
</div>
</div>
<div id="ClickHouse.SET_OP_DISTINCT_BY_DEFAULT" class="classattr">
<div class="attr variable">
<span class="name">SET_OP_DISTINCT_BY_DEFAULT</span><span class="annotation">: Dict[Type[<a href="../expressions.html#Expression">sqlglot.expressions.Expression</a>], Optional[bool]]</span> =
<input id="ClickHouse.SET_OP_DISTINCT_BY_DEFAULT-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.SET_OP_DISTINCT_BY_DEFAULT-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#Except">sqlglot.expressions.Except</a>&#39;&gt;: False, &lt;class &#39;<a href="../expressions.html#Intersect">sqlglot.expressions.Intersect</a>&#39;&gt;: False, &lt;class &#39;<a href="../expressions.html#Union">sqlglot.expressions.Union</a>&#39;&gt;: None}</span>
</div>
<a class="headerlink" href="#ClickHouse.SET_OP_DISTINCT_BY_DEFAULT"></a>
<div class="docstring"><p>Whether a set operation uses DISTINCT by default. This is <code>None</code> when either <code>DISTINCT</code> or <code>ALL</code>
must be explicitly specified.</p>
</div>
</div>
<div id="ClickHouse.generate_values_aliases" class="classattr">
<input id="ClickHouse.generate_values_aliases-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">generate_values_aliases</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Values">sqlglot.expressions.Values</a></span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Identifier">sqlglot.expressions.Identifier</a></span><span class="p">]</span>:</span></span>
<label class="view-source-button" for="ClickHouse.generate_values_aliases-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.generate_values_aliases"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.generate_values_aliases-211"><a href="#ClickHouse.generate_values_aliases-211"><span class="linenos">211</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">generate_values_aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]:</span>
</span><span id="ClickHouse.generate_values_aliases-212"><a href="#ClickHouse.generate_values_aliases-212"><span class="linenos">212</span></a> <span class="c1"># Clickhouse allows VALUES to have an embedded structure e.g:</span>
</span><span id="ClickHouse.generate_values_aliases-213"><a href="#ClickHouse.generate_values_aliases-213"><span class="linenos">213</span></a> <span class="c1"># VALUES(&#39;person String, place String&#39;, (&#39;Noah&#39;, &#39;Paris&#39;), ...)</span>
</span><span id="ClickHouse.generate_values_aliases-214"><a href="#ClickHouse.generate_values_aliases-214"><span class="linenos">214</span></a> <span class="c1"># In this case, we don&#39;t want to qualify the columns</span>
</span><span id="ClickHouse.generate_values_aliases-215"><a href="#ClickHouse.generate_values_aliases-215"><span class="linenos">215</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="ClickHouse.generate_values_aliases-216"><a href="#ClickHouse.generate_values_aliases-216"><span class="linenos">216</span></a>
</span><span id="ClickHouse.generate_values_aliases-217"><a href="#ClickHouse.generate_values_aliases-217"><span class="linenos">217</span></a> <span class="n">structure</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse.generate_values_aliases-218"><a href="#ClickHouse.generate_values_aliases-218"><span class="linenos">218</span></a> <span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="ClickHouse.generate_values_aliases-219"><a href="#ClickHouse.generate_values_aliases-219"><span class="linenos">219</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">))</span>
</span><span id="ClickHouse.generate_values_aliases-220"><a href="#ClickHouse.generate_values_aliases-220"><span class="linenos">220</span></a> <span class="k">else</span> <span class="kc">None</span>
</span><span id="ClickHouse.generate_values_aliases-221"><a href="#ClickHouse.generate_values_aliases-221"><span class="linenos">221</span></a> <span class="p">)</span>
</span><span id="ClickHouse.generate_values_aliases-222"><a href="#ClickHouse.generate_values_aliases-222"><span class="linenos">222</span></a> <span class="k">if</span> <span class="n">structure</span><span class="p">:</span>
</span><span id="ClickHouse.generate_values_aliases-223"><a href="#ClickHouse.generate_values_aliases-223"><span class="linenos">223</span></a> <span class="c1"># Split each column definition into the column name e.g:</span>
</span><span id="ClickHouse.generate_values_aliases-224"><a href="#ClickHouse.generate_values_aliases-224"><span class="linenos">224</span></a> <span class="c1"># &#39;person String, place String&#39; -&gt; [&#39;person&#39;, &#39;place&#39;]</span>
</span><span id="ClickHouse.generate_values_aliases-225"><a href="#ClickHouse.generate_values_aliases-225"><span class="linenos">225</span></a> <span class="n">structure_coldefs</span> <span class="o">=</span> <span class="p">[</span><span class="n">coldef</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">coldef</span> <span class="ow">in</span> <span class="n">structure</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse.generate_values_aliases-226"><a href="#ClickHouse.generate_values_aliases-226"><span class="linenos">226</span></a> <span class="n">column_aliases</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse.generate_values_aliases-227"><a href="#ClickHouse.generate_values_aliases-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">coldef</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="k">for</span> <span class="n">coldef</span> <span class="ow">in</span> <span class="n">structure_coldefs</span>
</span><span id="ClickHouse.generate_values_aliases-228"><a href="#ClickHouse.generate_values_aliases-228"><span class="linenos">228</span></a> <span class="p">]</span>
</span><span id="ClickHouse.generate_values_aliases-229"><a href="#ClickHouse.generate_values_aliases-229"><span class="linenos">229</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.generate_values_aliases-230"><a href="#ClickHouse.generate_values_aliases-230"><span class="linenos">230</span></a> <span class="c1"># Default column aliases in CH are &quot;c1&quot;, &quot;c2&quot;, etc.</span>
</span><span id="ClickHouse.generate_values_aliases-231"><a href="#ClickHouse.generate_values_aliases-231"><span class="linenos">231</span></a> <span class="n">column_aliases</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse.generate_values_aliases-232"><a href="#ClickHouse.generate_values_aliases-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;c</span><span class="si">{</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span>
</span><span id="ClickHouse.generate_values_aliases-233"><a href="#ClickHouse.generate_values_aliases-233"><span class="linenos">233</span></a> <span class="p">]</span>
</span><span id="ClickHouse.generate_values_aliases-234"><a href="#ClickHouse.generate_values_aliases-234"><span class="linenos">234</span></a>
</span><span id="ClickHouse.generate_values_aliases-235"><a href="#ClickHouse.generate_values_aliases-235"><span class="linenos">235</span></a> <span class="k">return</span> <span class="n">column_aliases</span>
</span></pre></div>
</div>
<div id="ClickHouse.SUPPORTS_COLUMN_JOIN_MARKS" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_COLUMN_JOIN_MARKS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.SUPPORTS_COLUMN_JOIN_MARKS"></a>
<div class="docstring"><p>Whether the old-style outer join (+) syntax is supported.</p>
</div>
</div>
<div id="ClickHouse.tokenizer_class" class="classattr">
<div class="attr variable">
<span class="name">tokenizer_class</span> =
<span class="default_value">&lt;class &#39;<a href="#ClickHouse.Tokenizer">ClickHouse.Tokenizer</a>&#39;&gt;</span>
</div>
<a class="headerlink" href="#ClickHouse.tokenizer_class"></a>
</div>
<div id="ClickHouse.jsonpath_tokenizer_class" class="classattr">
<div class="attr variable">
<span class="name">jsonpath_tokenizer_class</span> =
<span class="default_value">&lt;class &#39;sqlglot.tokens.JSONPathTokenizer&#39;&gt;</span>
</div>
<a class="headerlink" href="#ClickHouse.jsonpath_tokenizer_class"></a>
</div>
<div id="ClickHouse.parser_class" class="classattr">
<div class="attr variable">
<span class="name">parser_class</span> =
<span class="default_value">&lt;class &#39;<a href="#ClickHouse.Parser">ClickHouse.Parser</a>&#39;&gt;</span>
</div>
<a class="headerlink" href="#ClickHouse.parser_class"></a>
</div>
<div id="ClickHouse.generator_class" class="classattr">
<div class="attr variable">
<span class="name">generator_class</span> =
<span class="default_value">&lt;class &#39;<a href="#ClickHouse.Generator">ClickHouse.Generator</a>&#39;&gt;</span>
</div>
<a class="headerlink" href="#ClickHouse.generator_class"></a>
</div>
<div id="ClickHouse.TIME_TRIE" class="classattr">
<div class="attr variable">
<span class="name">TIME_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#ClickHouse.TIME_TRIE"></a>
</div>
<div id="ClickHouse.FORMAT_TRIE" class="classattr">
<div class="attr variable">
<span class="name">FORMAT_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#ClickHouse.FORMAT_TRIE"></a>
</div>
<div id="ClickHouse.INVERSE_TIME_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">INVERSE_TIME_MAPPING</span><span class="annotation">: Dict[str, str]</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#ClickHouse.INVERSE_TIME_MAPPING"></a>
</div>
<div id="ClickHouse.INVERSE_TIME_TRIE" class="classattr">
<div class="attr variable">
<span class="name">INVERSE_TIME_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#ClickHouse.INVERSE_TIME_TRIE"></a>
</div>
<div id="ClickHouse.INVERSE_FORMAT_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">INVERSE_FORMAT_MAPPING</span><span class="annotation">: Dict[str, str]</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#ClickHouse.INVERSE_FORMAT_MAPPING"></a>
</div>
<div id="ClickHouse.INVERSE_FORMAT_TRIE" class="classattr">
<div class="attr variable">
<span class="name">INVERSE_FORMAT_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#ClickHouse.INVERSE_FORMAT_TRIE"></a>
</div>
<div id="ClickHouse.INVERSE_CREATABLE_KIND_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">INVERSE_CREATABLE_KIND_MAPPING</span><span class="annotation">: dict[str, str]</span> =
<span class="default_value">{&#39;SCHEMA&#39;: &#39;DATABASE&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.INVERSE_CREATABLE_KIND_MAPPING"></a>
</div>
<div id="ClickHouse.ESCAPED_SEQUENCES" class="classattr">
<div class="attr variable">
<span class="name">ESCAPED_SEQUENCES</span><span class="annotation">: Dict[str, str]</span> =
<input id="ClickHouse.ESCAPED_SEQUENCES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.ESCAPED_SEQUENCES-view-value"></label><span class="default_value">{&#39;\x07&#39;: &#39;\\a&#39;, &#39;\x08&#39;: &#39;\\b&#39;, &#39;\x0c&#39;: &#39;\\f&#39;, &#39;\n&#39;: &#39;\\n&#39;, &#39;\r&#39;: &#39;\\r&#39;, &#39;\t&#39;: &#39;\\t&#39;, &#39;\x0b&#39;: &#39;\\v&#39;, &#39;\\&#39;: &#39;\\\\&#39;, &#39;\x00&#39;: &#39;\\0&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.ESCAPED_SEQUENCES"></a>
</div>
<div id="ClickHouse.QUOTE_START" class="classattr">
<div class="attr variable">
<span class="name">QUOTE_START</span> =
<span class="default_value">&#34;&#39;&#34;</span>
</div>
<a class="headerlink" href="#ClickHouse.QUOTE_START"></a>
</div>
<div id="ClickHouse.QUOTE_END" class="classattr">
<div class="attr variable">
<span class="name">QUOTE_END</span> =
<span class="default_value">&#34;&#39;&#34;</span>
</div>
<a class="headerlink" href="#ClickHouse.QUOTE_END"></a>
</div>
<div id="ClickHouse.IDENTIFIER_START" class="classattr">
<div class="attr variable">
<span class="name">IDENTIFIER_START</span> =
<span class="default_value">&#39;&#34;&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.IDENTIFIER_START"></a>
</div>
<div id="ClickHouse.IDENTIFIER_END" class="classattr">
<div class="attr variable">
<span class="name">IDENTIFIER_END</span> =
<span class="default_value">&#39;&#34;&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.IDENTIFIER_END"></a>
</div>
<div id="ClickHouse.BIT_START" class="classattr">
<div class="attr variable">
<span class="name">BIT_START</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">&#39;0b&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.BIT_START"></a>
</div>
<div id="ClickHouse.BIT_END" class="classattr">
<div class="attr variable">
<span class="name">BIT_END</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">&#39;&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.BIT_END"></a>
</div>
<div id="ClickHouse.HEX_START" class="classattr">
<div class="attr variable">
<span class="name">HEX_START</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">&#39;0x&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.HEX_START"></a>
</div>
<div id="ClickHouse.HEX_END" class="classattr">
<div class="attr variable">
<span class="name">HEX_END</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">&#39;&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.HEX_END"></a>
</div>
<div id="ClickHouse.BYTE_START" class="classattr">
<div class="attr variable">
<span class="name">BYTE_START</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#ClickHouse.BYTE_START"></a>
</div>
<div id="ClickHouse.BYTE_END" class="classattr">
<div class="attr variable">
<span class="name">BYTE_END</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#ClickHouse.BYTE_END"></a>
</div>
<div id="ClickHouse.UNICODE_START" class="classattr">
<div class="attr variable">
<span class="name">UNICODE_START</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#ClickHouse.UNICODE_START"></a>
</div>
<div id="ClickHouse.UNICODE_END" class="classattr">
<div class="attr variable">
<span class="name">UNICODE_END</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#ClickHouse.UNICODE_END"></a>
</div>
</section>
<section id="ClickHouse.Tokenizer">
<input id="ClickHouse.Tokenizer-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">ClickHouse.Tokenizer</span><wbr>(<span class="base"><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></span>):
<label class="view-source-button" for="ClickHouse.Tokenizer-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Tokenizer-237"><a href="#ClickHouse.Tokenizer-237"><span class="linenos">237</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
</span><span id="ClickHouse.Tokenizer-238"><a href="#ClickHouse.Tokenizer-238"><span class="linenos">238</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="s2">&quot;#!&quot;</span><span class="p">,</span> <span class="p">(</span><span class="s2">&quot;/*&quot;</span><span class="p">,</span> <span class="s2">&quot;*/&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse.Tokenizer-239"><a href="#ClickHouse.Tokenizer-239"><span class="linenos">239</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="ClickHouse.Tokenizer-240"><a href="#ClickHouse.Tokenizer-240"><span class="linenos">240</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="ClickHouse.Tokenizer-241"><a href="#ClickHouse.Tokenizer-241"><span class="linenos">241</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="ClickHouse.Tokenizer-242"><a href="#ClickHouse.Tokenizer-242"><span class="linenos">242</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;0b&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse.Tokenizer-243"><a href="#ClickHouse.Tokenizer-243"><span class="linenos">243</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;0x&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;0X&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)]</span>
</span><span id="ClickHouse.Tokenizer-244"><a href="#ClickHouse.Tokenizer-244"><span class="linenos">244</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;$&quot;</span><span class="p">]</span>
</span><span id="ClickHouse.Tokenizer-245"><a href="#ClickHouse.Tokenizer-245"><span class="linenos">245</span></a>
</span><span id="ClickHouse.Tokenizer-246"><a href="#ClickHouse.Tokenizer-246"><span class="linenos">246</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Tokenizer-247"><a href="#ClickHouse.Tokenizer-247"><span class="linenos">247</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-248"><a href="#ClickHouse.Tokenizer-248"><span class="linenos">248</span></a> <span class="s2">&quot;.:&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOTCOLON</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-249"><a href="#ClickHouse.Tokenizer-249"><span class="linenos">249</span></a> <span class="s2">&quot;ATTACH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-250"><a href="#ClickHouse.Tokenizer-250"><span class="linenos">250</span></a> <span class="s2">&quot;DATE32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-251"><a href="#ClickHouse.Tokenizer-251"><span class="linenos">251</span></a> <span class="s2">&quot;DATETIME64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-252"><a href="#ClickHouse.Tokenizer-252"><span class="linenos">252</span></a> <span class="s2">&quot;DICTIONARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-253"><a href="#ClickHouse.Tokenizer-253"><span class="linenos">253</span></a> <span class="s2">&quot;DYNAMIC&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DYNAMIC</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-254"><a href="#ClickHouse.Tokenizer-254"><span class="linenos">254</span></a> <span class="s2">&quot;ENUM8&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-255"><a href="#ClickHouse.Tokenizer-255"><span class="linenos">255</span></a> <span class="s2">&quot;ENUM16&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-256"><a href="#ClickHouse.Tokenizer-256"><span class="linenos">256</span></a> <span class="s2">&quot;FINAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-257"><a href="#ClickHouse.Tokenizer-257"><span class="linenos">257</span></a> <span class="s2">&quot;FIXEDSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-258"><a href="#ClickHouse.Tokenizer-258"><span class="linenos">258</span></a> <span class="s2">&quot;FLOAT32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-259"><a href="#ClickHouse.Tokenizer-259"><span class="linenos">259</span></a> <span class="s2">&quot;FLOAT64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-260"><a href="#ClickHouse.Tokenizer-260"><span class="linenos">260</span></a> <span class="s2">&quot;GLOBAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-261"><a href="#ClickHouse.Tokenizer-261"><span class="linenos">261</span></a> <span class="s2">&quot;LOWCARDINALITY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-262"><a href="#ClickHouse.Tokenizer-262"><span class="linenos">262</span></a> <span class="s2">&quot;MAP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-263"><a href="#ClickHouse.Tokenizer-263"><span class="linenos">263</span></a> <span class="s2">&quot;NESTED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NESTED</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-264"><a href="#ClickHouse.Tokenizer-264"><span class="linenos">264</span></a> <span class="s2">&quot;SAMPLE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-265"><a href="#ClickHouse.Tokenizer-265"><span class="linenos">265</span></a> <span class="s2">&quot;TUPLE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-266"><a href="#ClickHouse.Tokenizer-266"><span class="linenos">266</span></a> <span class="s2">&quot;UINT16&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-267"><a href="#ClickHouse.Tokenizer-267"><span class="linenos">267</span></a> <span class="s2">&quot;UINT32&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-268"><a href="#ClickHouse.Tokenizer-268"><span class="linenos">268</span></a> <span class="s2">&quot;UINT64&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-269"><a href="#ClickHouse.Tokenizer-269"><span class="linenos">269</span></a> <span class="s2">&quot;UINT8&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-270"><a href="#ClickHouse.Tokenizer-270"><span class="linenos">270</span></a> <span class="s2">&quot;IPV4&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV4</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-271"><a href="#ClickHouse.Tokenizer-271"><span class="linenos">271</span></a> <span class="s2">&quot;IPV6&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV6</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-272"><a href="#ClickHouse.Tokenizer-272"><span class="linenos">272</span></a> <span class="s2">&quot;POINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">POINT</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-273"><a href="#ClickHouse.Tokenizer-273"><span class="linenos">273</span></a> <span class="s2">&quot;RING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RING</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-274"><a href="#ClickHouse.Tokenizer-274"><span class="linenos">274</span></a> <span class="s2">&quot;LINESTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-275"><a href="#ClickHouse.Tokenizer-275"><span class="linenos">275</span></a> <span class="s2">&quot;MULTILINESTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-276"><a href="#ClickHouse.Tokenizer-276"><span class="linenos">276</span></a> <span class="s2">&quot;POLYGON&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-277"><a href="#ClickHouse.Tokenizer-277"><span class="linenos">277</span></a> <span class="s2">&quot;MULTIPOLYGON&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-278"><a href="#ClickHouse.Tokenizer-278"><span class="linenos">278</span></a> <span class="s2">&quot;AGGREGATEFUNCTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-279"><a href="#ClickHouse.Tokenizer-279"><span class="linenos">279</span></a> <span class="s2">&quot;SIMPLEAGGREGATEFUNCTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-280"><a href="#ClickHouse.Tokenizer-280"><span class="linenos">280</span></a> <span class="s2">&quot;SYSTEM&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-281"><a href="#ClickHouse.Tokenizer-281"><span class="linenos">281</span></a> <span class="s2">&quot;PREWHERE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-282"><a href="#ClickHouse.Tokenizer-282"><span class="linenos">282</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Tokenizer-283"><a href="#ClickHouse.Tokenizer-283"><span class="linenos">283</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;/*+&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Tokenizer-284"><a href="#ClickHouse.Tokenizer-284"><span class="linenos">284</span></a>
</span><span id="ClickHouse.Tokenizer-285"><a href="#ClickHouse.Tokenizer-285"><span class="linenos">285</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Tokenizer-286"><a href="#ClickHouse.Tokenizer-286"><span class="linenos">286</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-287"><a href="#ClickHouse.Tokenizer-287"><span class="linenos">287</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span>
</span><span id="ClickHouse.Tokenizer-288"><a href="#ClickHouse.Tokenizer-288"><span class="linenos">288</span></a> <span class="p">}</span>
</span></pre></div>
<div id="ClickHouse.Tokenizer.COMMENTS" class="classattr">
<div class="attr variable">
<span class="name">COMMENTS</span> =
<span class="default_value">[&#39;--&#39;, &#39;#&#39;, &#39;#!&#39;, (&#39;/*&#39;, &#39;*/&#39;)]</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.COMMENTS"></a>
</div>
<div id="ClickHouse.Tokenizer.IDENTIFIERS" class="classattr">
<div class="attr variable">
<span class="name">IDENTIFIERS</span> =
<span class="default_value">[&#39;&#34;&#39;, &#39;`&#39;]</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.IDENTIFIERS"></a>
</div>
<div id="ClickHouse.Tokenizer.IDENTIFIER_ESCAPES" class="classattr">
<div class="attr variable">
<span class="name">IDENTIFIER_ESCAPES</span> =
<span class="default_value">[&#39;\\&#39;]</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.IDENTIFIER_ESCAPES"></a>
</div>
<div id="ClickHouse.Tokenizer.STRING_ESCAPES" class="classattr">
<div class="attr variable">
<span class="name">STRING_ESCAPES</span> =
<span class="default_value">[&#34;&#39;&#34;, &#39;\\&#39;]</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.STRING_ESCAPES"></a>
</div>
<div id="ClickHouse.Tokenizer.BIT_STRINGS" class="classattr">
<div class="attr variable">
<span class="name">BIT_STRINGS</span> =
<span class="default_value">[(&#39;0b&#39;, &#39;&#39;)]</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.BIT_STRINGS"></a>
</div>
<div id="ClickHouse.Tokenizer.HEX_STRINGS" class="classattr">
<div class="attr variable">
<span class="name">HEX_STRINGS</span> =
<span class="default_value">[(&#39;0x&#39;, &#39;&#39;), (&#39;0X&#39;, &#39;&#39;)]</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.HEX_STRINGS"></a>
</div>
<div id="ClickHouse.Tokenizer.HEREDOC_STRINGS" class="classattr">
<div class="attr variable">
<span class="name">HEREDOC_STRINGS</span> =
<span class="default_value">[&#39;$&#39;]</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.HEREDOC_STRINGS"></a>
</div>
<div id="ClickHouse.Tokenizer.KEYWORDS" class="classattr">
<div class="attr variable">
<span class="name">KEYWORDS</span> =
<input id="ClickHouse.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{&#39;{%&#39;: &lt;TokenType.BLOCK_START: &#39;BLOCK_START&#39;&gt;, &#39;{%+&#39;: &lt;TokenType.BLOCK_START: &#39;BLOCK_START&#39;&gt;, &#39;{%-&#39;: &lt;TokenType.BLOCK_START: &#39;BLOCK_START&#39;&gt;, &#39;%}&#39;: &lt;TokenType.BLOCK_END: &#39;BLOCK_END&#39;&gt;, &#39;+%}&#39;: &lt;TokenType.BLOCK_END: &#39;BLOCK_END&#39;&gt;, &#39;-%}&#39;: &lt;TokenType.BLOCK_END: &#39;BLOCK_END&#39;&gt;, &#39;{{+&#39;: &lt;TokenType.BLOCK_START: &#39;BLOCK_START&#39;&gt;, &#39;{{-&#39;: &lt;TokenType.BLOCK_START: &#39;BLOCK_START&#39;&gt;, &#39;+}}&#39;: &lt;TokenType.BLOCK_END: &#39;BLOCK_END&#39;&gt;, &#39;-}}&#39;: &lt;TokenType.BLOCK_END: &#39;BLOCK_END&#39;&gt;, &#39;==&#39;: &lt;TokenType.EQ: &#39;EQ&#39;&gt;, &#39;::&#39;: &lt;TokenType.DCOLON: &#39;DCOLON&#39;&gt;, &#39;||&#39;: &lt;TokenType.DPIPE: &#39;DPIPE&#39;&gt;, &#39;&gt;=&#39;: &lt;TokenType.GTE: &#39;GTE&#39;&gt;, &#39;&lt;=&#39;: &lt;TokenType.LTE: &#39;LTE&#39;&gt;, &#39;&lt;&gt;&#39;: &lt;TokenType.NEQ: &#39;NEQ&#39;&gt;, &#39;!=&#39;: &lt;TokenType.NEQ: &#39;NEQ&#39;&gt;, &#39;:=&#39;: &lt;TokenType.COLON_EQ: &#39;COLON_EQ&#39;&gt;, &#39;&lt;=&gt;&#39;: &lt;TokenType.NULLSAFE_EQ: &#39;NULLSAFE_EQ&#39;&gt;, &#39;-&gt;&#39;: &lt;TokenType.ARROW: &#39;ARROW&#39;&gt;, &#39;-&gt;&gt;&#39;: &lt;TokenType.DARROW: &#39;DARROW&#39;&gt;, &#39;=&gt;&#39;: &lt;TokenType.FARROW: &#39;FARROW&#39;&gt;, &#39;#&gt;&#39;: &lt;TokenType.HASH_ARROW: &#39;HASH_ARROW&#39;&gt;, &#39;#&gt;&gt;&#39;: &lt;TokenType.DHASH_ARROW: &#39;DHASH_ARROW&#39;&gt;, &#39;&lt;-&gt;&#39;: &lt;TokenType.LR_ARROW: &#39;LR_ARROW&#39;&gt;, &#39;&amp;&amp;&#39;: &lt;TokenType.DAMP: &#39;DAMP&#39;&gt;, &#39;??&#39;: &lt;TokenType.DQMARK: &#39;DQMARK&#39;&gt;, &#39;~~~&#39;: &lt;TokenType.GLOB: &#39;GLOB&#39;&gt;, &#39;~~&#39;: &lt;TokenType.LIKE: &#39;LIKE&#39;&gt;, &#39;~~*&#39;: &lt;TokenType.ILIKE: &#39;ILIKE&#39;&gt;, &#39;~*&#39;: &lt;TokenType.IRLIKE: &#39;IRLIKE&#39;&gt;, &#39;ALL&#39;: &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &#39;ALWAYS&#39;: &lt;TokenType.ALWAYS: &#39;ALWAYS&#39;&gt;, &#39;AND&#39;: &lt;TokenType.AND: &#39;AND&#39;&gt;, &#39;ANTI&#39;: &lt;TokenType.ANTI: &#39;ANTI&#39;&gt;, &#39;ANY&#39;: &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &#39;ASC&#39;: &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &#39;AS&#39;: &lt;TokenType.ALIAS: &#39;ALIAS&#39;&gt;, &#39;ASOF&#39;: &lt;TokenType.ASOF: &#39;ASOF&#39;&gt;, &#39;AUTOINCREMENT&#39;: &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &#39;AUTO_INCREMENT&#39;: &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &#39;BEGIN&#39;: &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &#39;BETWEEN&#39;: &lt;TokenType.BETWEEN: &#39;BETWEEN&#39;&gt;, &#39;CACHE&#39;: &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &#39;UNCACHE&#39;: &lt;TokenType.UNCACHE: &#39;UNCACHE&#39;&gt;, &#39;CASE&#39;: &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &#39;CHARACTER SET&#39;: &lt;TokenType.CHARACTER_SET: &#39;CHARACTER_SET&#39;&gt;, &#39;CLUSTER BY&#39;: &lt;TokenType.CLUSTER_BY: &#39;CLUSTER_BY&#39;&gt;, &#39;COLLATE&#39;: &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &#39;COLUMN&#39;: &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &#39;COMMIT&#39;: &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &#39;CONNECT BY&#39;: &lt;TokenType.CONNECT_BY: &#39;CONNECT_BY&#39;&gt;, &#39;CONSTRAINT&#39;: &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &#39;COPY&#39;: &lt;TokenType.COPY: &#39;COPY&#39;&gt;, &#39;CREATE&#39;: &lt;TokenType.CREATE: &#39;CREATE&#39;&gt;, &#39;CROSS&#39;: &lt;TokenType.CROSS: &#39;CROSS&#39;&gt;, &#39;CUBE&#39;: &lt;TokenType.CUBE: &#39;CUBE&#39;&gt;, &#39;CURRENT_DATE&#39;: &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &#39;CURRENT_SCHEMA&#39;: &lt;TokenType.CURRENT_SCHEMA: &#39;CURRENT_SCHEMA&#39;&gt;, &#39;CURRENT_TIME&#39;: &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &#39;CURRENT_TIMESTAMP&#39;: &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &#39;CURRENT_USER&#39;: &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &#39;DATABASE&#39;: &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &#39;DEFAULT&#39;: &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &#39;DELETE&#39;: &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &#39;DESC&#39;: &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &#39;DESCRIBE&#39;: &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &#39;DISTINCT&#39;: &lt;TokenType.DISTINCT: &#39;DISTINCT&#39;&gt;, &#39;DISTRIBUTE BY&#39;: &lt;TokenType.DISTRIBUTE_BY: &#39;DISTRIBUTE_BY&#39;&gt;, &#39;DIV&#39;: &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &#39;DROP&#39;: &lt;TokenType.DROP: &#39;DROP&#39;&gt;, &#39;ELSE&#39;: &lt;TokenType.ELSE: &#39;ELSE&#39;&gt;, &#39;END&#39;: &lt;TokenType.END: &#39;END&#39;&gt;, &#39;ENUM&#39;: &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &#39;ESCAPE&#39;: &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &#39;EXCEPT&#39;: &lt;TokenType.EXCEPT: &#39;EXCEPT&#39;&gt;, &#39;EXECUTE&#39;: &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &#39;EXISTS&#39;: &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &#39;FALSE&#39;: &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &#39;FETCH&#39;: &lt;TokenType.FETCH: &#39;FETCH&#39;&gt;, &#39;FILTER&#39;: &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &#39;FIRST&#39;: &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &#39;FULL&#39;: &lt;TokenType.FULL: &#39;FULL&#39;&gt;, &#39;FUNCTION&#39;: &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;, &#39;FOR&#39;: &lt;TokenType.FOR: &#39;FOR&#39;&gt;, &#39;FOREIGN KEY&#39;: &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &#39;FORMAT&#39;: &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;, &#39;FROM&#39;: &lt;TokenType.FROM: &#39;FROM&#39;&gt;, &#39;GEOGRAPHY&#39;: &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &#39;GEOMETRY&#39;: &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &#39;GLOB&#39;: &lt;TokenType.GLOB: &#39;GLOB&#39;&gt;, &#39;GROUP BY&#39;: &lt;TokenType.GROUP_BY: &#39;GROUP_BY&#39;&gt;, &#39;GROUPING SETS&#39;: &lt;TokenType.GROUPING_SETS: &#39;GROUPING_SETS&#39;&gt;, &#39;HAVING&#39;: &lt;TokenType.HAVING: &#39;HAVING&#39;&gt;, &#39;ILIKE&#39;: &lt;TokenType.ILIKE: &#39;ILIKE&#39;&gt;, &#39;IN&#39;: &lt;TokenType.IN: &#39;IN&#39;&gt;, &#39;INDEX&#39;: &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &#39;INET&#39;: &lt;TokenType.INET: &#39;INET&#39;&gt;, &#39;INNER&#39;: &lt;TokenType.INNER: &#39;INNER&#39;&gt;, &#39;INSERT&#39;: &lt;TokenType.INSERT: &#39;INSERT&#39;&gt;, &#39;INTERVAL&#39;: &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &#39;INTERSECT&#39;: &lt;TokenType.INTERSECT: &#39;INTERSECT&#39;&gt;, &#39;INTO&#39;: &lt;TokenType.INTO: &#39;INTO&#39;&gt;, &#39;IS&#39;: &lt;TokenType.IS: &#39;IS&#39;&gt;, &#39;ISNULL&#39;: &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &#39;JOIN&#39;: &lt;TokenType.JOIN: &#39;JOIN&#39;&gt;, &#39;KEEP&#39;: &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &#39;KILL&#39;: &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &#39;LATERAL&#39;: &lt;TokenType.LATERAL: &#39;LATERAL&#39;&gt;, &#39;LEFT&#39;: &lt;TokenType.LEFT: &#39;LEFT&#39;&gt;, &#39;LIKE&#39;: &lt;TokenType.LIKE: &#39;LIKE&#39;&gt;, &#39;LIMIT&#39;: &lt;TokenType.LIMIT: &#39;LIMIT&#39;&gt;, &#39;LOAD&#39;: &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &#39;LOCK&#39;: &lt;TokenType.LOCK: &#39;LOCK&#39;&gt;, &#39;MERGE&#39;: &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &#39;NAMESPACE&#39;: &lt;TokenType.NAMESPACE: &#39;NAMESPACE&#39;&gt;, &#39;NATURAL&#39;: &lt;TokenType.NATURAL: &#39;NATURAL&#39;&gt;, &#39;NEXT&#39;: &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &#39;NOT&#39;: &lt;TokenType.NOT: &#39;NOT&#39;&gt;, &#39;NOTNULL&#39;: &lt;TokenType.NOTNULL: &#39;NOTNULL&#39;&gt;, &#39;NULL&#39;: &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &#39;OBJECT&#39;: &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &#39;OFFSET&#39;: &lt;TokenType.OFFSET: &#39;OFFSET&#39;&gt;, &#39;ON&#39;: &lt;TokenType.ON: &#39;ON&#39;&gt;, &#39;OR&#39;: &lt;TokenType.OR: &#39;OR&#39;&gt;, &#39;XOR&#39;: &lt;TokenType.XOR: &#39;XOR&#39;&gt;, &#39;ORDER BY&#39;: &lt;TokenType.ORDER_BY: &#39;ORDER_BY&#39;&gt;, &#39;ORDINALITY&#39;: &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &#39;OUTER&#39;: &lt;TokenType.OUTER: &#39;OUTER&#39;&gt;, &#39;OVER&#39;: &lt;TokenType.OVER: &#39;OVER&#39;&gt;, &#39;OVERLAPS&#39;: &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &#39;OVERWRITE&#39;: &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &#39;PARTITION&#39;: &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &#39;PARTITION BY&#39;: &lt;TokenType.PARTITION_BY: &#39;PARTITION_BY&#39;&gt;, &#39;PARTITIONED BY&#39;: &lt;TokenType.PARTITION_BY: &#39;PARTITION_BY&#39;&gt;, &#39;PARTITIONED_BY&#39;: &lt;TokenType.PARTITION_BY: &#39;PARTITION_BY&#39;&gt;, &#39;PERCENT&#39;: &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &#39;PIVOT&#39;: &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &#39;PRAGMA&#39;: &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &#39;PRIMARY KEY&#39;: &lt;TokenType.PRIMARY_KEY: &#39;PRIMARY_KEY&#39;&gt;, &#39;PROCEDURE&#39;: &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &#39;QUALIFY&#39;: &lt;TokenType.QUALIFY: &#39;QUALIFY&#39;&gt;, &#39;RANGE&#39;: &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &#39;RECURSIVE&#39;: &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &#39;REGEXP&#39;: &lt;TokenType.RLIKE: &#39;RLIKE&#39;&gt;, &#39;RENAME&#39;: &lt;TokenType.RENAME: &#39;RENAME&#39;&gt;, &#39;REPLACE&#39;: &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &#39;RETURNING&#39;: &lt;TokenType.RETURNING: &#39;RETURNING&#39;&gt;, &#39;REFERENCES&#39;: &lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &#39;RIGHT&#39;: &lt;TokenType.RIGHT: &#39;RIGHT&#39;&gt;, &#39;RLIKE&#39;: &lt;TokenType.RLIKE: &#39;RLIKE&#39;&gt;, &#39;ROLLBACK&#39;: &lt;TokenType.ROLLBACK: &#39;ROLLBACK&#39;&gt;, &#39;ROLLUP&#39;: &lt;TokenType.ROLLUP: &#39;ROLLUP&#39;&gt;, &#39;ROW&#39;: &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &#39;ROWS&#39;: &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &#39;SCHEMA&#39;: &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &#39;SELECT&#39;: &lt;TokenType.SELECT: &#39;SELECT&#39;&gt;, &#39;SEMI&#39;: &lt;TokenType.SEMI: &#39;SEMI&#39;&gt;, &#39;SET&#39;: &lt;TokenType.SET: &#39;SET&#39;&gt;, &#39;SETTINGS&#39;: &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;, &#39;SHOW&#39;: &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &#39;SIMILAR TO&#39;: &lt;TokenType.SIMILAR_TO: &#39;SIMILAR_TO&#39;&gt;, &#39;SOME&#39;: &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &#39;SORT BY&#39;: &lt;TokenType.SORT_BY: &#39;SORT_BY&#39;&gt;, &#39;START WITH&#39;: &lt;TokenType.START_WITH: &#39;START_WITH&#39;&gt;, &#39;STRAIGHT_JOIN&#39;: &lt;TokenType.STRAIGHT_JOIN: &#39;STRAIGHT_JOIN&#39;&gt;, &#39;TABLE&#39;: &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &#39;TABLESAMPLE&#39;: &lt;TokenType.TABLE_SAMPLE: &#39;TABLE_SAMPLE&#39;&gt;, &#39;TEMP&#39;: &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &#39;TEMPORARY&#39;: &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &#39;THEN&#39;: &lt;TokenType.THEN: &#39;THEN&#39;&gt;, &#39;TRUE&#39;: &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &#39;TRUNCATE&#39;: &lt;TokenType.TRUNCATE: &#39;TRUNCATE&#39;&gt;, &#39;UNION&#39;: &lt;TokenType.UNION: &#39;UNION&#39;&gt;, &#39;UNKNOWN&#39;: &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &#39;UNNEST&#39;: &lt;TokenType.UNNEST: &#39;UNNEST&#39;&gt;, &#39;UNPIVOT&#39;: &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &#39;UPDATE&#39;: &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;, &#39;USE&#39;: &lt;TokenType.USE: &#39;USE&#39;&gt;, &#39;USING&#39;: &lt;TokenType.USING: &#39;USING&#39;&gt;, &#39;UUID&#39;: &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &#39;VALUES&#39;: &lt;TokenType.VALUES: &#39;VALUES&#39;&gt;, &#39;VIEW&#39;: &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &#39;VOLATILE&#39;: &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &#39;WHEN&#39;: &lt;TokenType.WHEN: &#39;WHEN&#39;&gt;, &#39;WHERE&#39;: &lt;TokenType.WHERE: &#39;WHERE&#39;&gt;, &#39;WINDOW&#39;: &lt;TokenType.WINDOW: &#39;WINDOW&#39;&gt;, &#39;WITH&#39;: &lt;TokenType.WITH: &#39;WITH&#39;&gt;, &#39;APPLY&#39;: &lt;TokenType.APPLY: &#39;APPLY&#39;&gt;, &#39;ARRAY&#39;: &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &#39;BIT&#39;: &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &#39;BOOL&#39;: &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &#39;BOOLEAN&#39;: &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &#39;BYTE&#39;: &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &#39;MEDIUMINT&#39;: &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &#39;INT1&#39;: &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &#39;TINYINT&#39;: &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &#39;INT16&#39;: &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &#39;SHORT&#39;: &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &#39;SMALLINT&#39;: &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &#39;HUGEINT&#39;: &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &#39;UHUGEINT&#39;: &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &#39;INT2&#39;: &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &#39;INTEGER&#39;: &lt;TokenType.INT: &#39;INT&#39;&gt;, &#39;INT&#39;: &lt;TokenType.INT: &#39;INT&#39;&gt;, &#39;INT4&#39;: &lt;TokenType.INT: &#39;INT&#39;&gt;, &#39;INT32&#39;: &lt;TokenType.INT: &#39;INT&#39;&gt;, &#39;INT64&#39;: &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &#39;INT128&#39;: &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &#39;INT256&#39;: &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &#39;LONG&#39;: &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &#39;BIGINT&#39;: &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &#39;INT8&#39;: &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &#39;UINT&#39;: &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &#39;UINT128&#39;: &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &#39;UINT256&#39;: &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &#39;DEC&#39;: &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &#39;DECIMAL&#39;: &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &#39;DECIMAL32&#39;: &lt;TokenType.DECIMAL32: &#39;DECIMAL32&#39;&gt;, &#39;DECIMAL64&#39;: &lt;TokenType.DECIMAL64: &#39;DECIMAL64&#39;&gt;, &#39;DECIMAL128&#39;: &lt;TokenType.DECIMAL128: &#39;DECIMAL128&#39;&gt;, &#39;DECIMAL256&#39;: &lt;TokenType.DECIMAL256: &#39;DECIMAL256&#39;&gt;, &#39;BIGDECIMAL&#39;: &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &#39;BIGNUMERIC&#39;: &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &#39;LIST&#39;: &lt;TokenType.LIST: &#39;LIST&#39;&gt;, &#39;MAP&#39;: &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &#39;NULLABLE&#39;: &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &#39;NUMBER&#39;: &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &#39;NUMERIC&#39;: &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &#39;FIXED&#39;: &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &#39;REAL&#39;: &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &#39;FLOAT&#39;: &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &#39;FLOAT4&#39;: &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &#39;FLOAT8&#39;: &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &#39;DOUBLE&#39;: &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &#39;DOUBLE PRECISION&#39;: &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &#39;JSON&#39;: &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &#39;JSONB&#39;: &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &#39;CHAR&#39;: &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &#39;CHARACTER&#39;: &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &#39;NCHAR&#39;: &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &#39;VARCHAR&#39;: &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &#39;VARCHAR2&#39;: &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &#39;NVARCHAR&#39;: &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &#39;NVARCHAR2&#39;: &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &#39;BPCHAR&#39;: &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &#39;STR&#39;: &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &#39;STRING&#39;: &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &#39;TEXT&#39;: &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &#39;LONGTEXT&#39;: &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &#39;MEDIUMTEXT&#39;: &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &#39;TINYTEXT&#39;: &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &#39;CLOB&#39;: &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &#39;LONGVARCHAR&#39;: &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &#39;BINARY&#39;: &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &#39;BLOB&#39;: &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &#39;LONGBLOB&#39;: &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &#39;MEDIUMBLOB&#39;: &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &#39;TINYBLOB&#39;: &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &#39;BYTEA&#39;: &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &#39;VARBINARY&#39;: &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &#39;TIME&#39;: &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &#39;TIMETZ&#39;: &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &#39;TIMESTAMP&#39;: &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &#39;TIMESTAMPTZ&#39;: &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &#39;TIMESTAMPLTZ&#39;: &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &#39;TIMESTAMP_LTZ&#39;: &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &#39;TIMESTAMPNTZ&#39;: &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &#39;TIMESTAMP_NTZ&#39;: &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &#39;DATE&#39;: &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &#39;DATETIME&#39;: &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &#39;INT4RANGE&#39;: &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &#39;INT4MULTIRANGE&#39;: &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &#39;INT8RANGE&#39;: &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &#39;INT8MULTIRANGE&#39;: &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &#39;NUMRANGE&#39;: &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &#39;NUMMULTIRANGE&#39;: &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &#39;TSRANGE&#39;: &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &#39;TSMULTIRANGE&#39;: &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &#39;TSTZRANGE&#39;: &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &#39;TSTZMULTIRANGE&#39;: &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &#39;DATERANGE&#39;: &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &#39;DATEMULTIRANGE&#39;: &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &#39;UNIQUE&#39;: &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &#39;VECTOR&#39;: &lt;TokenType.VECTOR: &#39;VECTOR&#39;&gt;, &#39;STRUCT&#39;: &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &#39;SEQUENCE&#39;: &lt;TokenType.SEQUENCE: &#39;SEQUENCE&#39;&gt;, &#39;VARIANT&#39;: &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &#39;ALTER&#39;: &lt;TokenType.ALTER: &#39;ALTER&#39;&gt;, &#39;ANALYZE&#39;: &lt;TokenType.ANALYZE: &#39;ANALYZE&#39;&gt;, &#39;CALL&#39;: &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &#39;COMMENT&#39;: &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &#39;EXPLAIN&#39;: &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &#39;GRANT&#39;: &lt;TokenType.GRANT: &#39;GRANT&#39;&gt;, &#39;OPTIMIZE&#39;: &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &#39;PREPARE&#39;: &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &#39;VACUUM&#39;: &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &#39;USER-DEFINED&#39;: &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &#39;FOR VERSION&#39;: &lt;TokenType.VERSION_SNAPSHOT: &#39;VERSION_SNAPSHOT&#39;&gt;, &#39;FOR TIMESTAMP&#39;: &lt;TokenType.TIMESTAMP_SNAPSHOT: &#39;TIMESTAMP_SNAPSHOT&#39;&gt;, &#39;.:&#39;: &lt;TokenType.DOTCOLON: &#39;DOTCOLON&#39;&gt;, &#39;ATTACH&#39;: &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &#39;DATE32&#39;: &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &#39;DATETIME64&#39;: &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &#39;DICTIONARY&#39;: &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &#39;DYNAMIC&#39;: &lt;TokenType.DYNAMIC: &#39;DYNAMIC&#39;&gt;, &#39;ENUM8&#39;: &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &#39;ENUM16&#39;: &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &#39;FINAL&#39;: &lt;TokenType.FINAL: &#39;FINAL&#39;&gt;, &#39;FIXEDSTRING&#39;: &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &#39;FLOAT32&#39;: &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &#39;FLOAT64&#39;: &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &#39;GLOBAL&#39;: &lt;TokenType.GLOBAL: &#39;GLOBAL&#39;&gt;, &#39;LOWCARDINALITY&#39;: &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &#39;NESTED&#39;: &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &#39;SAMPLE&#39;: &lt;TokenType.TABLE_SAMPLE: &#39;TABLE_SAMPLE&#39;&gt;, &#39;TUPLE&#39;: &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &#39;UINT16&#39;: &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &#39;UINT32&#39;: &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &#39;UINT64&#39;: &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &#39;UINT8&#39;: &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &#39;IPV4&#39;: &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &#39;IPV6&#39;: &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &#39;POINT&#39;: &lt;TokenType.POINT: &#39;POINT&#39;&gt;, &#39;RING&#39;: &lt;TokenType.RING: &#39;RING&#39;&gt;, &#39;LINESTRING&#39;: &lt;TokenType.LINESTRING: &#39;LINESTRING&#39;&gt;, &#39;MULTILINESTRING&#39;: &lt;TokenType.MULTILINESTRING: &#39;MULTILINESTRING&#39;&gt;, &#39;POLYGON&#39;: &lt;TokenType.POLYGON: &#39;POLYGON&#39;&gt;, &#39;MULTIPOLYGON&#39;: &lt;TokenType.MULTIPOLYGON: &#39;MULTIPOLYGON&#39;&gt;, &#39;AGGREGATEFUNCTION&#39;: &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &#39;SIMPLEAGGREGATEFUNCTION&#39;: &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &#39;SYSTEM&#39;: &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &#39;PREWHERE&#39;: &lt;TokenType.PREWHERE: &#39;PREWHERE&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.KEYWORDS"></a>
</div>
<div id="ClickHouse.Tokenizer.SINGLE_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">SINGLE_TOKENS</span> =
<input id="ClickHouse.Tokenizer.SINGLE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Tokenizer.SINGLE_TOKENS-view-value"></label><span class="default_value">{&#39;(&#39;: &lt;TokenType.L_PAREN: &#39;L_PAREN&#39;&gt;, &#39;)&#39;: &lt;TokenType.R_PAREN: &#39;R_PAREN&#39;&gt;, &#39;[&#39;: &lt;TokenType.L_BRACKET: &#39;L_BRACKET&#39;&gt;, &#39;]&#39;: &lt;TokenType.R_BRACKET: &#39;R_BRACKET&#39;&gt;, &#39;{&#39;: &lt;TokenType.L_BRACE: &#39;L_BRACE&#39;&gt;, &#39;}&#39;: &lt;TokenType.R_BRACE: &#39;R_BRACE&#39;&gt;, &#39;&amp;&#39;: &lt;TokenType.AMP: &#39;AMP&#39;&gt;, &#39;^&#39;: &lt;TokenType.CARET: &#39;CARET&#39;&gt;, &#39;:&#39;: &lt;TokenType.COLON: &#39;COLON&#39;&gt;, &#39;,&#39;: &lt;TokenType.COMMA: &#39;COMMA&#39;&gt;, &#39;.&#39;: &lt;TokenType.DOT: &#39;DOT&#39;&gt;, &#39;-&#39;: &lt;TokenType.DASH: &#39;DASH&#39;&gt;, &#39;=&#39;: &lt;TokenType.EQ: &#39;EQ&#39;&gt;, &#39;&gt;&#39;: &lt;TokenType.GT: &#39;GT&#39;&gt;, &#39;&lt;&#39;: &lt;TokenType.LT: &#39;LT&#39;&gt;, &#39;%&#39;: &lt;TokenType.MOD: &#39;MOD&#39;&gt;, &#39;!&#39;: &lt;TokenType.NOT: &#39;NOT&#39;&gt;, &#39;|&#39;: &lt;TokenType.PIPE: &#39;PIPE&#39;&gt;, &#39;+&#39;: &lt;TokenType.PLUS: &#39;PLUS&#39;&gt;, &#39;;&#39;: &lt;TokenType.SEMICOLON: &#39;SEMICOLON&#39;&gt;, &#39;/&#39;: &lt;TokenType.SLASH: &#39;SLASH&#39;&gt;, &#39;\\&#39;: &lt;TokenType.BACKSLASH: &#39;BACKSLASH&#39;&gt;, &#39;*&#39;: &lt;TokenType.STAR: &#39;STAR&#39;&gt;, &#39;~&#39;: &lt;TokenType.TILDA: &#39;TILDA&#39;&gt;, &#39;?&#39;: &lt;TokenType.PLACEHOLDER: &#39;PLACEHOLDER&#39;&gt;, &#39;@&#39;: &lt;TokenType.PARAMETER: &#39;PARAMETER&#39;&gt;, &#39;#&#39;: &lt;TokenType.HASH: &#39;HASH&#39;&gt;, &#34;&#39;&#34;: &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &#39;`&#39;: &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &#39;&#34;&#39;: &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &#39;$&#39;: &lt;TokenType.HEREDOC_STRING: &#39;HEREDOC_STRING&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Tokenizer.SINGLE_TOKENS"></a>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt>
<dd id="ClickHouse.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd>
<dd id="ClickHouse.Tokenizer.BYTE_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.BYTE_STRINGS">BYTE_STRINGS</a></dd>
<dd id="ClickHouse.Tokenizer.RAW_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.RAW_STRINGS">RAW_STRINGS</a></dd>
<dd id="ClickHouse.Tokenizer.UNICODE_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.UNICODE_STRINGS">UNICODE_STRINGS</a></dd>
<dd id="ClickHouse.Tokenizer.QUOTES" class="variable"><a href="../tokens.html#Tokenizer.QUOTES">QUOTES</a></dd>
<dd id="ClickHouse.Tokenizer.VAR_SINGLE_TOKENS" class="variable"><a href="../tokens.html#Tokenizer.VAR_SINGLE_TOKENS">VAR_SINGLE_TOKENS</a></dd>
<dd id="ClickHouse.Tokenizer.HEREDOC_TAG_IS_IDENTIFIER" class="variable"><a href="../tokens.html#Tokenizer.HEREDOC_TAG_IS_IDENTIFIER">HEREDOC_TAG_IS_IDENTIFIER</a></dd>
<dd id="ClickHouse.Tokenizer.HEREDOC_STRING_ALTERNATIVE" class="variable"><a href="../tokens.html#Tokenizer.HEREDOC_STRING_ALTERNATIVE">HEREDOC_STRING_ALTERNATIVE</a></dd>
<dd id="ClickHouse.Tokenizer.STRING_ESCAPES_ALLOWED_IN_RAW_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.STRING_ESCAPES_ALLOWED_IN_RAW_STRINGS">STRING_ESCAPES_ALLOWED_IN_RAW_STRINGS</a></dd>
<dd id="ClickHouse.Tokenizer.NESTED_COMMENTS" class="variable"><a href="../tokens.html#Tokenizer.NESTED_COMMENTS">NESTED_COMMENTS</a></dd>
<dd id="ClickHouse.Tokenizer.HINT_START" class="variable"><a href="../tokens.html#Tokenizer.HINT_START">HINT_START</a></dd>
<dd id="ClickHouse.Tokenizer.TOKENS_PRECEDING_HINT" class="variable"><a href="../tokens.html#Tokenizer.TOKENS_PRECEDING_HINT">TOKENS_PRECEDING_HINT</a></dd>
<dd id="ClickHouse.Tokenizer.WHITE_SPACE" class="variable"><a href="../tokens.html#Tokenizer.WHITE_SPACE">WHITE_SPACE</a></dd>
<dd id="ClickHouse.Tokenizer.COMMANDS" class="variable"><a href="../tokens.html#Tokenizer.COMMANDS">COMMANDS</a></dd>
<dd id="ClickHouse.Tokenizer.COMMAND_PREFIX_TOKENS" class="variable"><a href="../tokens.html#Tokenizer.COMMAND_PREFIX_TOKENS">COMMAND_PREFIX_TOKENS</a></dd>
<dd id="ClickHouse.Tokenizer.NUMERIC_LITERALS" class="variable"><a href="../tokens.html#Tokenizer.NUMERIC_LITERALS">NUMERIC_LITERALS</a></dd>
<dd id="ClickHouse.Tokenizer.dialect" class="variable"><a href="../tokens.html#Tokenizer.dialect">dialect</a></dd>
<dd id="ClickHouse.Tokenizer.use_rs_tokenizer" class="variable"><a href="../tokens.html#Tokenizer.use_rs_tokenizer">use_rs_tokenizer</a></dd>
<dd id="ClickHouse.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd>
<dd id="ClickHouse.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd>
<dd id="ClickHouse.Tokenizer.tokenize_rs" class="function"><a href="../tokens.html#Tokenizer.tokenize_rs">tokenize_rs</a></dd>
<dd id="ClickHouse.Tokenizer.size" class="variable"><a href="../tokens.html#Tokenizer.size">size</a></dd>
<dd id="ClickHouse.Tokenizer.sql" class="variable"><a href="../tokens.html#Tokenizer.sql">sql</a></dd>
<dd id="ClickHouse.Tokenizer.tokens" class="variable"><a href="../tokens.html#Tokenizer.tokens">tokens</a></dd>
</div>
</dl>
</div>
</section>
<section id="ClickHouse.Parser">
<input id="ClickHouse.Parser-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">ClickHouse.Parser</span><wbr>(<span class="base"><a href="../parser.html#Parser">sqlglot.parser.Parser</a></span>):
<label class="view-source-button" for="ClickHouse.Parser-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Parser-290"><a href="#ClickHouse.Parser-290"><span class="linenos">290</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-291"><a href="#ClickHouse.Parser-291"><span class="linenos">291</span></a> <span class="c1"># Tested in ClickHouse&#39;s playground, it seems that the following two queries do the same thing</span>
</span><span id="ClickHouse.Parser-292"><a href="#ClickHouse.Parser-292"><span class="linenos">292</span></a> <span class="c1"># * select x from t1 union all select x from t2 limit 1;</span>
</span><span id="ClickHouse.Parser-293"><a href="#ClickHouse.Parser-293"><span class="linenos">293</span></a> <span class="c1"># * select x from t1 union all (select x from t2 limit 1);</span>
</span><span id="ClickHouse.Parser-294"><a href="#ClickHouse.Parser-294"><span class="linenos">294</span></a> <span class="n">MODIFIERS_ATTACHED_TO_SET_OP</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Parser-295"><a href="#ClickHouse.Parser-295"><span class="linenos">295</span></a> <span class="n">INTERVAL_SPANS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Parser-296"><a href="#ClickHouse.Parser-296"><span class="linenos">296</span></a> <span class="n">OPTIONAL_ALIAS_TOKEN_CTE</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Parser-297"><a href="#ClickHouse.Parser-297"><span class="linenos">297</span></a>
</span><span id="ClickHouse.Parser-298"><a href="#ClickHouse.Parser-298"><span class="linenos">298</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-299"><a href="#ClickHouse.Parser-299"><span class="linenos">299</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-300"><a href="#ClickHouse.Parser-300"><span class="linenos">300</span></a> <span class="s2">&quot;ANY&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-301"><a href="#ClickHouse.Parser-301"><span class="linenos">301</span></a> <span class="s2">&quot;ARRAYSUM&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-302"><a href="#ClickHouse.Parser-302"><span class="linenos">302</span></a> <span class="s2">&quot;COUNTIF&quot;</span><span class="p">:</span> <span class="n">_build_count_if</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-303"><a href="#ClickHouse.Parser-303"><span class="linenos">303</span></a> <span class="s2">&quot;DATE_ADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-304"><a href="#ClickHouse.Parser-304"><span class="linenos">304</span></a> <span class="s2">&quot;DATEADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-305"><a href="#ClickHouse.Parser-305"><span class="linenos">305</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-306"><a href="#ClickHouse.Parser-306"><span class="linenos">306</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-307"><a href="#ClickHouse.Parser-307"><span class="linenos">307</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">:</span> <span class="n">_build_date_format</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-308"><a href="#ClickHouse.Parser-308"><span class="linenos">308</span></a> <span class="s2">&quot;DATE_SUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-309"><a href="#ClickHouse.Parser-309"><span class="linenos">309</span></a> <span class="s2">&quot;DATESUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-310"><a href="#ClickHouse.Parser-310"><span class="linenos">310</span></a> <span class="s2">&quot;FORMATDATETIME&quot;</span><span class="p">:</span> <span class="n">_build_date_format</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-311"><a href="#ClickHouse.Parser-311"><span class="linenos">311</span></a> <span class="s2">&quot;JSONEXTRACTSTRING&quot;</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-312"><a href="#ClickHouse.Parser-312"><span class="linenos">312</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">zero_based_indexing</span><span class="o">=</span><span class="kc">False</span>
</span><span id="ClickHouse.Parser-313"><a href="#ClickHouse.Parser-313"><span class="linenos">313</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Parser-314"><a href="#ClickHouse.Parser-314"><span class="linenos">314</span></a> <span class="s2">&quot;LENGTH&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">binary</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-315"><a href="#ClickHouse.Parser-315"><span class="linenos">315</span></a> <span class="s2">&quot;MAP&quot;</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">build_var_map</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-316"><a href="#ClickHouse.Parser-316"><span class="linenos">316</span></a> <span class="s2">&quot;MATCH&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-317"><a href="#ClickHouse.Parser-317"><span class="linenos">317</span></a> <span class="s2">&quot;RANDCANONICAL&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-318"><a href="#ClickHouse.Parser-318"><span class="linenos">318</span></a> <span class="s2">&quot;STR_TO_DATE&quot;</span><span class="p">:</span> <span class="n">_build_str_to_date</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-319"><a href="#ClickHouse.Parser-319"><span class="linenos">319</span></a> <span class="s2">&quot;TUPLE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-320"><a href="#ClickHouse.Parser-320"><span class="linenos">320</span></a> <span class="s2">&quot;TIMESTAMP_SUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-321"><a href="#ClickHouse.Parser-321"><span class="linenos">321</span></a> <span class="s2">&quot;TIMESTAMPSUB&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-322"><a href="#ClickHouse.Parser-322"><span class="linenos">322</span></a> <span class="s2">&quot;TIMESTAMP_ADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-323"><a href="#ClickHouse.Parser-323"><span class="linenos">323</span></a> <span class="s2">&quot;TIMESTAMPADD&quot;</span><span class="p">:</span> <span class="n">build_date_delta</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">,</span> <span class="n">default_unit</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-324"><a href="#ClickHouse.Parser-324"><span class="linenos">324</span></a> <span class="s2">&quot;UNIQ&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-325"><a href="#ClickHouse.Parser-325"><span class="linenos">325</span></a> <span class="s2">&quot;XOR&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-326"><a href="#ClickHouse.Parser-326"><span class="linenos">326</span></a> <span class="s2">&quot;MD5&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MD5Digest</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-327"><a href="#ClickHouse.Parser-327"><span class="linenos">327</span></a> <span class="s2">&quot;SHA256&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">256</span><span class="p">)),</span>
</span><span id="ClickHouse.Parser-328"><a href="#ClickHouse.Parser-328"><span class="linenos">328</span></a> <span class="s2">&quot;SHA512&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">512</span><span class="p">)),</span>
</span><span id="ClickHouse.Parser-329"><a href="#ClickHouse.Parser-329"><span class="linenos">329</span></a> <span class="s2">&quot;EDITDISTANCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-330"><a href="#ClickHouse.Parser-330"><span class="linenos">330</span></a> <span class="s2">&quot;LEVENSHTEINDISTANCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-331"><a href="#ClickHouse.Parser-331"><span class="linenos">331</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-332"><a href="#ClickHouse.Parser-332"><span class="linenos">332</span></a> <span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;TRANSFORM&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-333"><a href="#ClickHouse.Parser-333"><span class="linenos">333</span></a>
</span><span id="ClickHouse.Parser-334"><a href="#ClickHouse.Parser-334"><span class="linenos">334</span></a> <span class="n">AGG_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-335"><a href="#ClickHouse.Parser-335"><span class="linenos">335</span></a> <span class="s2">&quot;count&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-336"><a href="#ClickHouse.Parser-336"><span class="linenos">336</span></a> <span class="s2">&quot;min&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-337"><a href="#ClickHouse.Parser-337"><span class="linenos">337</span></a> <span class="s2">&quot;max&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-338"><a href="#ClickHouse.Parser-338"><span class="linenos">338</span></a> <span class="s2">&quot;sum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-339"><a href="#ClickHouse.Parser-339"><span class="linenos">339</span></a> <span class="s2">&quot;avg&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-340"><a href="#ClickHouse.Parser-340"><span class="linenos">340</span></a> <span class="s2">&quot;any&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-341"><a href="#ClickHouse.Parser-341"><span class="linenos">341</span></a> <span class="s2">&quot;stddevPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-342"><a href="#ClickHouse.Parser-342"><span class="linenos">342</span></a> <span class="s2">&quot;stddevSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-343"><a href="#ClickHouse.Parser-343"><span class="linenos">343</span></a> <span class="s2">&quot;varPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-344"><a href="#ClickHouse.Parser-344"><span class="linenos">344</span></a> <span class="s2">&quot;varSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-345"><a href="#ClickHouse.Parser-345"><span class="linenos">345</span></a> <span class="s2">&quot;corr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-346"><a href="#ClickHouse.Parser-346"><span class="linenos">346</span></a> <span class="s2">&quot;covarPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-347"><a href="#ClickHouse.Parser-347"><span class="linenos">347</span></a> <span class="s2">&quot;covarSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-348"><a href="#ClickHouse.Parser-348"><span class="linenos">348</span></a> <span class="s2">&quot;entropy&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-349"><a href="#ClickHouse.Parser-349"><span class="linenos">349</span></a> <span class="s2">&quot;exponentialMovingAverage&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-350"><a href="#ClickHouse.Parser-350"><span class="linenos">350</span></a> <span class="s2">&quot;intervalLengthSum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-351"><a href="#ClickHouse.Parser-351"><span class="linenos">351</span></a> <span class="s2">&quot;kolmogorovSmirnovTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-352"><a href="#ClickHouse.Parser-352"><span class="linenos">352</span></a> <span class="s2">&quot;mannWhitneyUTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-353"><a href="#ClickHouse.Parser-353"><span class="linenos">353</span></a> <span class="s2">&quot;median&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-354"><a href="#ClickHouse.Parser-354"><span class="linenos">354</span></a> <span class="s2">&quot;rankCorr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-355"><a href="#ClickHouse.Parser-355"><span class="linenos">355</span></a> <span class="s2">&quot;sumKahan&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-356"><a href="#ClickHouse.Parser-356"><span class="linenos">356</span></a> <span class="s2">&quot;studentTTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-357"><a href="#ClickHouse.Parser-357"><span class="linenos">357</span></a> <span class="s2">&quot;welchTTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-358"><a href="#ClickHouse.Parser-358"><span class="linenos">358</span></a> <span class="s2">&quot;anyHeavy&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-359"><a href="#ClickHouse.Parser-359"><span class="linenos">359</span></a> <span class="s2">&quot;anyLast&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-360"><a href="#ClickHouse.Parser-360"><span class="linenos">360</span></a> <span class="s2">&quot;boundingRatio&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-361"><a href="#ClickHouse.Parser-361"><span class="linenos">361</span></a> <span class="s2">&quot;first_value&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-362"><a href="#ClickHouse.Parser-362"><span class="linenos">362</span></a> <span class="s2">&quot;last_value&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-363"><a href="#ClickHouse.Parser-363"><span class="linenos">363</span></a> <span class="s2">&quot;argMin&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-364"><a href="#ClickHouse.Parser-364"><span class="linenos">364</span></a> <span class="s2">&quot;argMax&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-365"><a href="#ClickHouse.Parser-365"><span class="linenos">365</span></a> <span class="s2">&quot;avgWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-366"><a href="#ClickHouse.Parser-366"><span class="linenos">366</span></a> <span class="s2">&quot;topK&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-367"><a href="#ClickHouse.Parser-367"><span class="linenos">367</span></a> <span class="s2">&quot;topKWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-368"><a href="#ClickHouse.Parser-368"><span class="linenos">368</span></a> <span class="s2">&quot;deltaSum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-369"><a href="#ClickHouse.Parser-369"><span class="linenos">369</span></a> <span class="s2">&quot;deltaSumTimestamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-370"><a href="#ClickHouse.Parser-370"><span class="linenos">370</span></a> <span class="s2">&quot;groupArray&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-371"><a href="#ClickHouse.Parser-371"><span class="linenos">371</span></a> <span class="s2">&quot;groupArrayLast&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-372"><a href="#ClickHouse.Parser-372"><span class="linenos">372</span></a> <span class="s2">&quot;groupUniqArray&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-373"><a href="#ClickHouse.Parser-373"><span class="linenos">373</span></a> <span class="s2">&quot;groupArrayInsertAt&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-374"><a href="#ClickHouse.Parser-374"><span class="linenos">374</span></a> <span class="s2">&quot;groupArrayMovingAvg&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-375"><a href="#ClickHouse.Parser-375"><span class="linenos">375</span></a> <span class="s2">&quot;groupArrayMovingSum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-376"><a href="#ClickHouse.Parser-376"><span class="linenos">376</span></a> <span class="s2">&quot;groupArraySample&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-377"><a href="#ClickHouse.Parser-377"><span class="linenos">377</span></a> <span class="s2">&quot;groupBitAnd&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-378"><a href="#ClickHouse.Parser-378"><span class="linenos">378</span></a> <span class="s2">&quot;groupBitOr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-379"><a href="#ClickHouse.Parser-379"><span class="linenos">379</span></a> <span class="s2">&quot;groupBitXor&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-380"><a href="#ClickHouse.Parser-380"><span class="linenos">380</span></a> <span class="s2">&quot;groupBitmap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-381"><a href="#ClickHouse.Parser-381"><span class="linenos">381</span></a> <span class="s2">&quot;groupBitmapAnd&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-382"><a href="#ClickHouse.Parser-382"><span class="linenos">382</span></a> <span class="s2">&quot;groupBitmapOr&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-383"><a href="#ClickHouse.Parser-383"><span class="linenos">383</span></a> <span class="s2">&quot;groupBitmapXor&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-384"><a href="#ClickHouse.Parser-384"><span class="linenos">384</span></a> <span class="s2">&quot;sumWithOverflow&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-385"><a href="#ClickHouse.Parser-385"><span class="linenos">385</span></a> <span class="s2">&quot;sumMap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-386"><a href="#ClickHouse.Parser-386"><span class="linenos">386</span></a> <span class="s2">&quot;minMap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-387"><a href="#ClickHouse.Parser-387"><span class="linenos">387</span></a> <span class="s2">&quot;maxMap&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-388"><a href="#ClickHouse.Parser-388"><span class="linenos">388</span></a> <span class="s2">&quot;skewSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-389"><a href="#ClickHouse.Parser-389"><span class="linenos">389</span></a> <span class="s2">&quot;skewPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-390"><a href="#ClickHouse.Parser-390"><span class="linenos">390</span></a> <span class="s2">&quot;kurtSamp&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-391"><a href="#ClickHouse.Parser-391"><span class="linenos">391</span></a> <span class="s2">&quot;kurtPop&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-392"><a href="#ClickHouse.Parser-392"><span class="linenos">392</span></a> <span class="s2">&quot;uniq&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-393"><a href="#ClickHouse.Parser-393"><span class="linenos">393</span></a> <span class="s2">&quot;uniqExact&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-394"><a href="#ClickHouse.Parser-394"><span class="linenos">394</span></a> <span class="s2">&quot;uniqCombined&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-395"><a href="#ClickHouse.Parser-395"><span class="linenos">395</span></a> <span class="s2">&quot;uniqCombined64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-396"><a href="#ClickHouse.Parser-396"><span class="linenos">396</span></a> <span class="s2">&quot;uniqHLL12&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-397"><a href="#ClickHouse.Parser-397"><span class="linenos">397</span></a> <span class="s2">&quot;uniqTheta&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-398"><a href="#ClickHouse.Parser-398"><span class="linenos">398</span></a> <span class="s2">&quot;quantile&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-399"><a href="#ClickHouse.Parser-399"><span class="linenos">399</span></a> <span class="s2">&quot;quantiles&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-400"><a href="#ClickHouse.Parser-400"><span class="linenos">400</span></a> <span class="s2">&quot;quantileExact&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-401"><a href="#ClickHouse.Parser-401"><span class="linenos">401</span></a> <span class="s2">&quot;quantilesExact&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-402"><a href="#ClickHouse.Parser-402"><span class="linenos">402</span></a> <span class="s2">&quot;quantileExactLow&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-403"><a href="#ClickHouse.Parser-403"><span class="linenos">403</span></a> <span class="s2">&quot;quantilesExactLow&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-404"><a href="#ClickHouse.Parser-404"><span class="linenos">404</span></a> <span class="s2">&quot;quantileExactHigh&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-405"><a href="#ClickHouse.Parser-405"><span class="linenos">405</span></a> <span class="s2">&quot;quantilesExactHigh&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-406"><a href="#ClickHouse.Parser-406"><span class="linenos">406</span></a> <span class="s2">&quot;quantileExactWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-407"><a href="#ClickHouse.Parser-407"><span class="linenos">407</span></a> <span class="s2">&quot;quantilesExactWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-408"><a href="#ClickHouse.Parser-408"><span class="linenos">408</span></a> <span class="s2">&quot;quantileTiming&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-409"><a href="#ClickHouse.Parser-409"><span class="linenos">409</span></a> <span class="s2">&quot;quantilesTiming&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-410"><a href="#ClickHouse.Parser-410"><span class="linenos">410</span></a> <span class="s2">&quot;quantileTimingWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-411"><a href="#ClickHouse.Parser-411"><span class="linenos">411</span></a> <span class="s2">&quot;quantilesTimingWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-412"><a href="#ClickHouse.Parser-412"><span class="linenos">412</span></a> <span class="s2">&quot;quantileDeterministic&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-413"><a href="#ClickHouse.Parser-413"><span class="linenos">413</span></a> <span class="s2">&quot;quantilesDeterministic&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-414"><a href="#ClickHouse.Parser-414"><span class="linenos">414</span></a> <span class="s2">&quot;quantileTDigest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-415"><a href="#ClickHouse.Parser-415"><span class="linenos">415</span></a> <span class="s2">&quot;quantilesTDigest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-416"><a href="#ClickHouse.Parser-416"><span class="linenos">416</span></a> <span class="s2">&quot;quantileTDigestWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-417"><a href="#ClickHouse.Parser-417"><span class="linenos">417</span></a> <span class="s2">&quot;quantilesTDigestWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-418"><a href="#ClickHouse.Parser-418"><span class="linenos">418</span></a> <span class="s2">&quot;quantileBFloat16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-419"><a href="#ClickHouse.Parser-419"><span class="linenos">419</span></a> <span class="s2">&quot;quantilesBFloat16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-420"><a href="#ClickHouse.Parser-420"><span class="linenos">420</span></a> <span class="s2">&quot;quantileBFloat16Weighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-421"><a href="#ClickHouse.Parser-421"><span class="linenos">421</span></a> <span class="s2">&quot;quantilesBFloat16Weighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-422"><a href="#ClickHouse.Parser-422"><span class="linenos">422</span></a> <span class="s2">&quot;simpleLinearRegression&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-423"><a href="#ClickHouse.Parser-423"><span class="linenos">423</span></a> <span class="s2">&quot;stochasticLinearRegression&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-424"><a href="#ClickHouse.Parser-424"><span class="linenos">424</span></a> <span class="s2">&quot;stochasticLogisticRegression&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-425"><a href="#ClickHouse.Parser-425"><span class="linenos">425</span></a> <span class="s2">&quot;categoricalInformationValue&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-426"><a href="#ClickHouse.Parser-426"><span class="linenos">426</span></a> <span class="s2">&quot;contingency&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-427"><a href="#ClickHouse.Parser-427"><span class="linenos">427</span></a> <span class="s2">&quot;cramersV&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-428"><a href="#ClickHouse.Parser-428"><span class="linenos">428</span></a> <span class="s2">&quot;cramersVBiasCorrected&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-429"><a href="#ClickHouse.Parser-429"><span class="linenos">429</span></a> <span class="s2">&quot;theilsU&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-430"><a href="#ClickHouse.Parser-430"><span class="linenos">430</span></a> <span class="s2">&quot;maxIntersections&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-431"><a href="#ClickHouse.Parser-431"><span class="linenos">431</span></a> <span class="s2">&quot;maxIntersectionsPosition&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-432"><a href="#ClickHouse.Parser-432"><span class="linenos">432</span></a> <span class="s2">&quot;meanZTest&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-433"><a href="#ClickHouse.Parser-433"><span class="linenos">433</span></a> <span class="s2">&quot;quantileInterpolatedWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-434"><a href="#ClickHouse.Parser-434"><span class="linenos">434</span></a> <span class="s2">&quot;quantilesInterpolatedWeighted&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-435"><a href="#ClickHouse.Parser-435"><span class="linenos">435</span></a> <span class="s2">&quot;quantileGK&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-436"><a href="#ClickHouse.Parser-436"><span class="linenos">436</span></a> <span class="s2">&quot;quantilesGK&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-437"><a href="#ClickHouse.Parser-437"><span class="linenos">437</span></a> <span class="s2">&quot;sparkBar&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-438"><a href="#ClickHouse.Parser-438"><span class="linenos">438</span></a> <span class="s2">&quot;sumCount&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-439"><a href="#ClickHouse.Parser-439"><span class="linenos">439</span></a> <span class="s2">&quot;largestTriangleThreeBuckets&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-440"><a href="#ClickHouse.Parser-440"><span class="linenos">440</span></a> <span class="s2">&quot;histogram&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-441"><a href="#ClickHouse.Parser-441"><span class="linenos">441</span></a> <span class="s2">&quot;sequenceMatch&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-442"><a href="#ClickHouse.Parser-442"><span class="linenos">442</span></a> <span class="s2">&quot;sequenceCount&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-443"><a href="#ClickHouse.Parser-443"><span class="linenos">443</span></a> <span class="s2">&quot;windowFunnel&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-444"><a href="#ClickHouse.Parser-444"><span class="linenos">444</span></a> <span class="s2">&quot;retention&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-445"><a href="#ClickHouse.Parser-445"><span class="linenos">445</span></a> <span class="s2">&quot;uniqUpTo&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-446"><a href="#ClickHouse.Parser-446"><span class="linenos">446</span></a> <span class="s2">&quot;sequenceNextNode&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-447"><a href="#ClickHouse.Parser-447"><span class="linenos">447</span></a> <span class="s2">&quot;exponentialTimeDecayedAvg&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-448"><a href="#ClickHouse.Parser-448"><span class="linenos">448</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-449"><a href="#ClickHouse.Parser-449"><span class="linenos">449</span></a>
</span><span id="ClickHouse.Parser-450"><a href="#ClickHouse.Parser-450"><span class="linenos">450</span></a> <span class="n">AGG_FUNCTIONS_SUFFIXES</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse.Parser-451"><a href="#ClickHouse.Parser-451"><span class="linenos">451</span></a> <span class="s2">&quot;If&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-452"><a href="#ClickHouse.Parser-452"><span class="linenos">452</span></a> <span class="s2">&quot;Array&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-453"><a href="#ClickHouse.Parser-453"><span class="linenos">453</span></a> <span class="s2">&quot;ArrayIf&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-454"><a href="#ClickHouse.Parser-454"><span class="linenos">454</span></a> <span class="s2">&quot;Map&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-455"><a href="#ClickHouse.Parser-455"><span class="linenos">455</span></a> <span class="s2">&quot;SimpleState&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-456"><a href="#ClickHouse.Parser-456"><span class="linenos">456</span></a> <span class="s2">&quot;State&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-457"><a href="#ClickHouse.Parser-457"><span class="linenos">457</span></a> <span class="s2">&quot;Merge&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-458"><a href="#ClickHouse.Parser-458"><span class="linenos">458</span></a> <span class="s2">&quot;MergeState&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-459"><a href="#ClickHouse.Parser-459"><span class="linenos">459</span></a> <span class="s2">&quot;ForEach&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-460"><a href="#ClickHouse.Parser-460"><span class="linenos">460</span></a> <span class="s2">&quot;Distinct&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-461"><a href="#ClickHouse.Parser-461"><span class="linenos">461</span></a> <span class="s2">&quot;OrDefault&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-462"><a href="#ClickHouse.Parser-462"><span class="linenos">462</span></a> <span class="s2">&quot;OrNull&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-463"><a href="#ClickHouse.Parser-463"><span class="linenos">463</span></a> <span class="s2">&quot;Resample&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-464"><a href="#ClickHouse.Parser-464"><span class="linenos">464</span></a> <span class="s2">&quot;ArgMin&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-465"><a href="#ClickHouse.Parser-465"><span class="linenos">465</span></a> <span class="s2">&quot;ArgMax&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-466"><a href="#ClickHouse.Parser-466"><span class="linenos">466</span></a> <span class="p">]</span>
</span><span id="ClickHouse.Parser-467"><a href="#ClickHouse.Parser-467"><span class="linenos">467</span></a>
</span><span id="ClickHouse.Parser-468"><a href="#ClickHouse.Parser-468"><span class="linenos">468</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-469"><a href="#ClickHouse.Parser-469"><span class="linenos">469</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-470"><a href="#ClickHouse.Parser-470"><span class="linenos">470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-471"><a href="#ClickHouse.Parser-471"><span class="linenos">471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-472"><a href="#ClickHouse.Parser-472"><span class="linenos">472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-473"><a href="#ClickHouse.Parser-473"><span class="linenos">473</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-474"><a href="#ClickHouse.Parser-474"><span class="linenos">474</span></a>
</span><span id="ClickHouse.Parser-475"><a href="#ClickHouse.Parser-475"><span class="linenos">475</span></a> <span class="n">RESERVED_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span>
</span><span id="ClickHouse.Parser-476"><a href="#ClickHouse.Parser-476"><span class="linenos">476</span></a>
</span><span id="ClickHouse.Parser-477"><a href="#ClickHouse.Parser-477"><span class="linenos">477</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-478"><a href="#ClickHouse.Parser-478"><span class="linenos">478</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-479"><a href="#ClickHouse.Parser-479"><span class="linenos">479</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-480"><a href="#ClickHouse.Parser-480"><span class="linenos">480</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-481"><a href="#ClickHouse.Parser-481"><span class="linenos">481</span></a>
</span><span id="ClickHouse.Parser-482"><a href="#ClickHouse.Parser-482"><span class="linenos">482</span></a> <span class="n">AGG_FUNC_MAPPING</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse.Parser-483"><a href="#ClickHouse.Parser-483"><span class="linenos">483</span></a> <span class="k">lambda</span> <span class="n">functions</span><span class="p">,</span> <span class="n">suffixes</span><span class="p">:</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-484"><a href="#ClickHouse.Parser-484"><span class="linenos">484</span></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">f</span><span class="si">}{</span><span class="n">sfx</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">sfx</span><span class="p">)</span> <span class="k">for</span> <span class="n">sfx</span> <span class="ow">in</span> <span class="p">(</span><span class="n">suffixes</span> <span class="o">+</span> <span class="p">[</span><span class="s2">&quot;&quot;</span><span class="p">])</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">functions</span>
</span><span id="ClickHouse.Parser-485"><a href="#ClickHouse.Parser-485"><span class="linenos">485</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-486"><a href="#ClickHouse.Parser-486"><span class="linenos">486</span></a> <span class="p">)(</span><span class="n">AGG_FUNCTIONS</span><span class="p">,</span> <span class="n">AGG_FUNCTIONS_SUFFIXES</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-487"><a href="#ClickHouse.Parser-487"><span class="linenos">487</span></a>
</span><span id="ClickHouse.Parser-488"><a href="#ClickHouse.Parser-488"><span class="linenos">488</span></a> <span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span><span class="p">,</span> <span class="s2">&quot;TUPLE&quot;</span><span class="p">}</span>
</span><span id="ClickHouse.Parser-489"><a href="#ClickHouse.Parser-489"><span class="linenos">489</span></a>
</span><span id="ClickHouse.Parser-490"><a href="#ClickHouse.Parser-490"><span class="linenos">490</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-491"><a href="#ClickHouse.Parser-491"><span class="linenos">491</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-492"><a href="#ClickHouse.Parser-492"><span class="linenos">492</span></a> <span class="s2">&quot;ARRAYJOIN&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()),</span>
</span><span id="ClickHouse.Parser-493"><a href="#ClickHouse.Parser-493"><span class="linenos">493</span></a> <span class="s2">&quot;QUANTILE&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_quantile</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-494"><a href="#ClickHouse.Parser-494"><span class="linenos">494</span></a> <span class="s2">&quot;MEDIAN&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_quantile</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-495"><a href="#ClickHouse.Parser-495"><span class="linenos">495</span></a> <span class="s2">&quot;COLUMNS&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_columns</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-496"><a href="#ClickHouse.Parser-496"><span class="linenos">496</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-497"><a href="#ClickHouse.Parser-497"><span class="linenos">497</span></a>
</span><span id="ClickHouse.Parser-498"><a href="#ClickHouse.Parser-498"><span class="linenos">498</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;MATCH&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-499"><a href="#ClickHouse.Parser-499"><span class="linenos">499</span></a>
</span><span id="ClickHouse.Parser-500"><a href="#ClickHouse.Parser-500"><span class="linenos">500</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-501"><a href="#ClickHouse.Parser-501"><span class="linenos">501</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;DYNAMIC&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-502"><a href="#ClickHouse.Parser-502"><span class="linenos">502</span></a>
</span><span id="ClickHouse.Parser-503"><a href="#ClickHouse.Parser-503"><span class="linenos">503</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-504"><a href="#ClickHouse.Parser-504"><span class="linenos">504</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;ANY&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-505"><a href="#ClickHouse.Parser-505"><span class="linenos">505</span></a>
</span><span id="ClickHouse.Parser-506"><a href="#ClickHouse.Parser-506"><span class="linenos">506</span></a> <span class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-507"><a href="#ClickHouse.Parser-507"><span class="linenos">507</span></a> <span class="n">NO_PAREN_FUNCTIONS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-508"><a href="#ClickHouse.Parser-508"><span class="linenos">508</span></a>
</span><span id="ClickHouse.Parser-509"><a href="#ClickHouse.Parser-509"><span class="linenos">509</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-510"><a href="#ClickHouse.Parser-510"><span class="linenos">510</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-511"><a href="#ClickHouse.Parser-511"><span class="linenos">511</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_global_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-512"><a href="#ClickHouse.Parser-512"><span class="linenos">512</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-513"><a href="#ClickHouse.Parser-513"><span class="linenos">513</span></a>
</span><span id="ClickHouse.Parser-514"><a href="#ClickHouse.Parser-514"><span class="linenos">514</span></a> <span class="c1"># The PLACEHOLDER entry is popped because 1) it doesn&#39;t affect Clickhouse (it corresponds to</span>
</span><span id="ClickHouse.Parser-515"><a href="#ClickHouse.Parser-515"><span class="linenos">515</span></a> <span class="c1"># the postgres-specific JSONBContains parser) and 2) it makes parsing the ternary op simpler.</span>
</span><span id="ClickHouse.Parser-516"><a href="#ClickHouse.Parser-516"><span class="linenos">516</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-517"><a href="#ClickHouse.Parser-517"><span class="linenos">517</span></a> <span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-518"><a href="#ClickHouse.Parser-518"><span class="linenos">518</span></a>
</span><span id="ClickHouse.Parser-519"><a href="#ClickHouse.Parser-519"><span class="linenos">519</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-520"><a href="#ClickHouse.Parser-520"><span class="linenos">520</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-521"><a href="#ClickHouse.Parser-521"><span class="linenos">521</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-522"><a href="#ClickHouse.Parser-522"><span class="linenos">522</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-523"><a href="#ClickHouse.Parser-523"><span class="linenos">523</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-524"><a href="#ClickHouse.Parser-524"><span class="linenos">524</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-525"><a href="#ClickHouse.Parser-525"><span class="linenos">525</span></a>
</span><span id="ClickHouse.Parser-526"><a href="#ClickHouse.Parser-526"><span class="linenos">526</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-527"><a href="#ClickHouse.Parser-527"><span class="linenos">527</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-528"><a href="#ClickHouse.Parser-528"><span class="linenos">528</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-529"><a href="#ClickHouse.Parser-529"><span class="linenos">529</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-530"><a href="#ClickHouse.Parser-530"><span class="linenos">530</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-531"><a href="#ClickHouse.Parser-531"><span class="linenos">531</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-532"><a href="#ClickHouse.Parser-532"><span class="linenos">532</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-533"><a href="#ClickHouse.Parser-533"><span class="linenos">533</span></a>
</span><span id="ClickHouse.Parser-534"><a href="#ClickHouse.Parser-534"><span class="linenos">534</span></a> <span class="n">ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-535"><a href="#ClickHouse.Parser-535"><span class="linenos">535</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-536"><a href="#ClickHouse.Parser-536"><span class="linenos">536</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-537"><a href="#ClickHouse.Parser-537"><span class="linenos">537</span></a>
</span><span id="ClickHouse.Parser-538"><a href="#ClickHouse.Parser-538"><span class="linenos">538</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse.Parser-539"><a href="#ClickHouse.Parser-539"><span class="linenos">539</span></a>
</span><span id="ClickHouse.Parser-540"><a href="#ClickHouse.Parser-540"><span class="linenos">540</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-541"><a href="#ClickHouse.Parser-541"><span class="linenos">541</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-542"><a href="#ClickHouse.Parser-542"><span class="linenos">542</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span>
</span><span id="ClickHouse.Parser-543"><a href="#ClickHouse.Parser-543"><span class="linenos">543</span></a> <span class="s2">&quot;settings&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-544"><a href="#ClickHouse.Parser-544"><span class="linenos">544</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-545"><a href="#ClickHouse.Parser-545"><span class="linenos">545</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Parser-546"><a href="#ClickHouse.Parser-546"><span class="linenos">546</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;format&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span>
</span><span id="ClickHouse.Parser-547"><a href="#ClickHouse.Parser-547"><span class="linenos">547</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-548"><a href="#ClickHouse.Parser-548"><span class="linenos">548</span></a>
</span><span id="ClickHouse.Parser-549"><a href="#ClickHouse.Parser-549"><span class="linenos">549</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-550"><a href="#ClickHouse.Parser-550"><span class="linenos">550</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-551"><a href="#ClickHouse.Parser-551"><span class="linenos">551</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_constraint</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-552"><a href="#ClickHouse.Parser-552"><span class="linenos">552</span></a> <span class="s2">&quot;CODEC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-553"><a href="#ClickHouse.Parser-553"><span class="linenos">553</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-554"><a href="#ClickHouse.Parser-554"><span class="linenos">554</span></a>
</span><span id="ClickHouse.Parser-555"><a href="#ClickHouse.Parser-555"><span class="linenos">555</span></a> <span class="n">ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-556"><a href="#ClickHouse.Parser-556"><span class="linenos">556</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ALTER_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-557"><a href="#ClickHouse.Parser-557"><span class="linenos">557</span></a> <span class="s2">&quot;REPLACE&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_replace</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-558"><a href="#ClickHouse.Parser-558"><span class="linenos">558</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-559"><a href="#ClickHouse.Parser-559"><span class="linenos">559</span></a>
</span><span id="ClickHouse.Parser-560"><a href="#ClickHouse.Parser-560"><span class="linenos">560</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-561"><a href="#ClickHouse.Parser-561"><span class="linenos">561</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-562"><a href="#ClickHouse.Parser-562"><span class="linenos">562</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-563"><a href="#ClickHouse.Parser-563"><span class="linenos">563</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-564"><a href="#ClickHouse.Parser-564"><span class="linenos">564</span></a>
</span><span id="ClickHouse.Parser-565"><a href="#ClickHouse.Parser-565"><span class="linenos">565</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-566"><a href="#ClickHouse.Parser-566"><span class="linenos">566</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-567"><a href="#ClickHouse.Parser-567"><span class="linenos">567</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_parameter</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-568"><a href="#ClickHouse.Parser-568"><span class="linenos">568</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-569"><a href="#ClickHouse.Parser-569"><span class="linenos">569</span></a>
</span><span id="ClickHouse.Parser-570"><a href="#ClickHouse.Parser-570"><span class="linenos">570</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/create/function</span>
</span><span id="ClickHouse.Parser-571"><a href="#ClickHouse.Parser-571"><span class="linenos">571</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_user_defined_function_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-572"><a href="#ClickHouse.Parser-572"><span class="linenos">572</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-573"><a href="#ClickHouse.Parser-573"><span class="linenos">573</span></a>
</span><span id="ClickHouse.Parser-574"><a href="#ClickHouse.Parser-574"><span class="linenos">574</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_types</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-575"><a href="#ClickHouse.Parser-575"><span class="linenos">575</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse.Parser-576"><a href="#ClickHouse.Parser-576"><span class="linenos">576</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-577"><a href="#ClickHouse.Parser-577"><span class="linenos">577</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-578"><a href="#ClickHouse.Parser-578"><span class="linenos">578</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span>
</span><span id="ClickHouse.Parser-579"><a href="#ClickHouse.Parser-579"><span class="linenos">579</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-580"><a href="#ClickHouse.Parser-580"><span class="linenos">580</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="ow">and</span> <span class="n">dtype</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-581"><a href="#ClickHouse.Parser-581"><span class="linenos">581</span></a> <span class="c1"># Mark every type as non-nullable which is ClickHouse&#39;s default, unless it&#39;s</span>
</span><span id="ClickHouse.Parser-582"><a href="#ClickHouse.Parser-582"><span class="linenos">582</span></a> <span class="c1"># already marked as nullable. This marker helps us transpile types from other</span>
</span><span id="ClickHouse.Parser-583"><a href="#ClickHouse.Parser-583"><span class="linenos">583</span></a> <span class="c1"># dialects to ClickHouse, so that we can e.g. produce `CAST(x AS Nullable(String))`</span>
</span><span id="ClickHouse.Parser-584"><a href="#ClickHouse.Parser-584"><span class="linenos">584</span></a> <span class="c1"># from `CAST(x AS TEXT)`. If there is a `NULL` value in `x`, the former would</span>
</span><span id="ClickHouse.Parser-585"><a href="#ClickHouse.Parser-585"><span class="linenos">585</span></a> <span class="c1"># fail in ClickHouse without the `Nullable` type constructor.</span>
</span><span id="ClickHouse.Parser-586"><a href="#ClickHouse.Parser-586"><span class="linenos">586</span></a> <span class="n">dtype</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-587"><a href="#ClickHouse.Parser-587"><span class="linenos">587</span></a>
</span><span id="ClickHouse.Parser-588"><a href="#ClickHouse.Parser-588"><span class="linenos">588</span></a> <span class="k">return</span> <span class="n">dtype</span>
</span><span id="ClickHouse.Parser-589"><a href="#ClickHouse.Parser-589"><span class="linenos">589</span></a>
</span><span id="ClickHouse.Parser-590"><a href="#ClickHouse.Parser-590"><span class="linenos">590</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Extract</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-591"><a href="#ClickHouse.Parser-591"><span class="linenos">591</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="ClickHouse.Parser-592"><a href="#ClickHouse.Parser-592"><span class="linenos">592</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-593"><a href="#ClickHouse.Parser-593"><span class="linenos">593</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-594"><a href="#ClickHouse.Parser-594"><span class="linenos">594</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-595"><a href="#ClickHouse.Parser-595"><span class="linenos">595</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-596"><a href="#ClickHouse.Parser-596"><span class="linenos">596</span></a>
</span><span id="ClickHouse.Parser-597"><a href="#ClickHouse.Parser-597"><span class="linenos">597</span></a> <span class="c1"># We return Anonymous here because extract and regexpExtract have different semantics,</span>
</span><span id="ClickHouse.Parser-598"><a href="#ClickHouse.Parser-598"><span class="linenos">598</span></a> <span class="c1"># so parsing extract(foo, bar) into RegexpExtract can potentially break queries. E.g.,</span>
</span><span id="ClickHouse.Parser-599"><a href="#ClickHouse.Parser-599"><span class="linenos">599</span></a> <span class="c1"># `extract(&#39;foobar&#39;, &#39;b&#39;)` works, but ClickHouse crashes for `regexpExtract(&#39;foobar&#39;, &#39;b&#39;)`.</span>
</span><span id="ClickHouse.Parser-600"><a href="#ClickHouse.Parser-600"><span class="linenos">600</span></a> <span class="c1">#</span>
</span><span id="ClickHouse.Parser-601"><a href="#ClickHouse.Parser-601"><span class="linenos">601</span></a> <span class="c1"># TODO: can we somehow convert the former into an equivalent `regexpExtract` call?</span>
</span><span id="ClickHouse.Parser-602"><a href="#ClickHouse.Parser-602"><span class="linenos">602</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-603"><a href="#ClickHouse.Parser-603"><span class="linenos">603</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-604"><a href="#ClickHouse.Parser-604"><span class="linenos">604</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">&quot;extract&quot;</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()]</span>
</span><span id="ClickHouse.Parser-605"><a href="#ClickHouse.Parser-605"><span class="linenos">605</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-606"><a href="#ClickHouse.Parser-606"><span class="linenos">606</span></a>
</span><span id="ClickHouse.Parser-607"><a href="#ClickHouse.Parser-607"><span class="linenos">607</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-608"><a href="#ClickHouse.Parser-608"><span class="linenos">608</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-609"><a href="#ClickHouse.Parser-609"><span class="linenos">609</span></a>
</span><span id="ClickHouse.Parser-610"><a href="#ClickHouse.Parser-610"><span class="linenos">610</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-611"><a href="#ClickHouse.Parser-611"><span class="linenos">611</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-612"><a href="#ClickHouse.Parser-612"><span class="linenos">612</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-613"><a href="#ClickHouse.Parser-613"><span class="linenos">613</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-614"><a href="#ClickHouse.Parser-614"><span class="linenos">614</span></a> <span class="n">true</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-615"><a href="#ClickHouse.Parser-615"><span class="linenos">615</span></a> <span class="n">false</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-616"><a href="#ClickHouse.Parser-616"><span class="linenos">616</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-617"><a href="#ClickHouse.Parser-617"><span class="linenos">617</span></a>
</span><span id="ClickHouse.Parser-618"><a href="#ClickHouse.Parser-618"><span class="linenos">618</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse.Parser-619"><a href="#ClickHouse.Parser-619"><span class="linenos">619</span></a>
</span><span id="ClickHouse.Parser-620"><a href="#ClickHouse.Parser-620"><span class="linenos">620</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_query_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-621"><a href="#ClickHouse.Parser-621"><span class="linenos">621</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="ClickHouse.Parser-622"><a href="#ClickHouse.Parser-622"><span class="linenos">622</span></a><span class="sd"> Parse a placeholder expression like SELECT {abc: UInt32} or FROM {table: Identifier}</span>
</span><span id="ClickHouse.Parser-623"><a href="#ClickHouse.Parser-623"><span class="linenos">623</span></a><span class="sd"> https://clickhouse.com/docs/en/sql-reference/syntax#defining-and-using-query-parameters</span>
</span><span id="ClickHouse.Parser-624"><a href="#ClickHouse.Parser-624"><span class="linenos">624</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="ClickHouse.Parser-625"><a href="#ClickHouse.Parser-625"><span class="linenos">625</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="ClickHouse.Parser-626"><a href="#ClickHouse.Parser-626"><span class="linenos">626</span></a>
</span><span id="ClickHouse.Parser-627"><a href="#ClickHouse.Parser-627"><span class="linenos">627</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-628"><a href="#ClickHouse.Parser-628"><span class="linenos">628</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-629"><a href="#ClickHouse.Parser-629"><span class="linenos">629</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
</span><span id="ClickHouse.Parser-630"><a href="#ClickHouse.Parser-630"><span class="linenos">630</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;IDENTIFIER&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">&quot;Identifier&quot;</span>
</span><span id="ClickHouse.Parser-631"><a href="#ClickHouse.Parser-631"><span class="linenos">631</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-632"><a href="#ClickHouse.Parser-632"><span class="linenos">632</span></a>
</span><span id="ClickHouse.Parser-633"><a href="#ClickHouse.Parser-633"><span class="linenos">633</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-634"><a href="#ClickHouse.Parser-634"><span class="linenos">634</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-635"><a href="#ClickHouse.Parser-635"><span class="linenos">635</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-636"><a href="#ClickHouse.Parser-636"><span class="linenos">636</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-637"><a href="#ClickHouse.Parser-637"><span class="linenos">637</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;Expecting }&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-638"><a href="#ClickHouse.Parser-638"><span class="linenos">638</span></a>
</span><span id="ClickHouse.Parser-639"><a href="#ClickHouse.Parser-639"><span class="linenos">639</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">quoted</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-640"><a href="#ClickHouse.Parser-640"><span class="linenos">640</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-641"><a href="#ClickHouse.Parser-641"><span class="linenos">641</span></a>
</span><span id="ClickHouse.Parser-642"><a href="#ClickHouse.Parser-642"><span class="linenos">642</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-643"><a href="#ClickHouse.Parser-643"><span class="linenos">643</span></a>
</span><span id="ClickHouse.Parser-644"><a href="#ClickHouse.Parser-644"><span class="linenos">644</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_bracket</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-645"><a href="#ClickHouse.Parser-645"><span class="linenos">645</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-646"><a href="#ClickHouse.Parser-646"><span class="linenos">646</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-647"><a href="#ClickHouse.Parser-647"><span class="linenos">647</span></a> <span class="n">l_brace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-648"><a href="#ClickHouse.Parser-648"><span class="linenos">648</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-649"><a href="#ClickHouse.Parser-649"><span class="linenos">649</span></a>
</span><span id="ClickHouse.Parser-650"><a href="#ClickHouse.Parser-650"><span class="linenos">650</span></a> <span class="k">if</span> <span class="n">l_brace</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bracket</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-651"><a href="#ClickHouse.Parser-651"><span class="linenos">651</span></a> <span class="n">varmap</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">(</span><span class="n">keys</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(),</span> <span class="n">values</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">())</span>
</span><span id="ClickHouse.Parser-652"><a href="#ClickHouse.Parser-652"><span class="linenos">652</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">bracket</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-653"><a href="#ClickHouse.Parser-653"><span class="linenos">653</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-654"><a href="#ClickHouse.Parser-654"><span class="linenos">654</span></a> <span class="k">break</span>
</span><span id="ClickHouse.Parser-655"><a href="#ClickHouse.Parser-655"><span class="linenos">655</span></a>
</span><span id="ClickHouse.Parser-656"><a href="#ClickHouse.Parser-656"><span class="linenos">656</span></a> <span class="n">varmap</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;keys&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
</span><span id="ClickHouse.Parser-657"><a href="#ClickHouse.Parser-657"><span class="linenos">657</span></a> <span class="n">varmap</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;values&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-658"><a href="#ClickHouse.Parser-658"><span class="linenos">658</span></a>
</span><span id="ClickHouse.Parser-659"><a href="#ClickHouse.Parser-659"><span class="linenos">659</span></a> <span class="k">return</span> <span class="n">varmap</span>
</span><span id="ClickHouse.Parser-660"><a href="#ClickHouse.Parser-660"><span class="linenos">660</span></a>
</span><span id="ClickHouse.Parser-661"><a href="#ClickHouse.Parser-661"><span class="linenos">661</span></a> <span class="k">return</span> <span class="n">bracket</span>
</span><span id="ClickHouse.Parser-662"><a href="#ClickHouse.Parser-662"><span class="linenos">662</span></a>
</span><span id="ClickHouse.Parser-663"><a href="#ClickHouse.Parser-663"><span class="linenos">663</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">is_global</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-664"><a href="#ClickHouse.Parser-664"><span class="linenos">664</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-665"><a href="#ClickHouse.Parser-665"><span class="linenos">665</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">,</span> <span class="n">is_global</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-666"><a href="#ClickHouse.Parser-666"><span class="linenos">666</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse.Parser-667"><a href="#ClickHouse.Parser-667"><span class="linenos">667</span></a>
</span><span id="ClickHouse.Parser-668"><a href="#ClickHouse.Parser-668"><span class="linenos">668</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_global_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-669"><a href="#ClickHouse.Parser-669"><span class="linenos">669</span></a> <span class="n">is_negated</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-670"><a href="#ClickHouse.Parser-670"><span class="linenos">670</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">is_global</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-671"><a href="#ClickHouse.Parser-671"><span class="linenos">671</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_negated</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="ClickHouse.Parser-672"><a href="#ClickHouse.Parser-672"><span class="linenos">672</span></a>
</span><span id="ClickHouse.Parser-673"><a href="#ClickHouse.Parser-673"><span class="linenos">673</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_table</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-674"><a href="#ClickHouse.Parser-674"><span class="linenos">674</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-675"><a href="#ClickHouse.Parser-675"><span class="linenos">675</span></a> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-676"><a href="#ClickHouse.Parser-676"><span class="linenos">676</span></a> <span class="n">joins</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-677"><a href="#ClickHouse.Parser-677"><span class="linenos">677</span></a> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-678"><a href="#ClickHouse.Parser-678"><span class="linenos">678</span></a> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-679"><a href="#ClickHouse.Parser-679"><span class="linenos">679</span></a> <span class="n">is_db_reference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-680"><a href="#ClickHouse.Parser-680"><span class="linenos">680</span></a> <span class="n">parse_partition</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-681"><a href="#ClickHouse.Parser-681"><span class="linenos">681</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-682"><a href="#ClickHouse.Parser-682"><span class="linenos">682</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-683"><a href="#ClickHouse.Parser-683"><span class="linenos">683</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-684"><a href="#ClickHouse.Parser-684"><span class="linenos">684</span></a> <span class="n">joins</span><span class="o">=</span><span class="n">joins</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-685"><a href="#ClickHouse.Parser-685"><span class="linenos">685</span></a> <span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-686"><a href="#ClickHouse.Parser-686"><span class="linenos">686</span></a> <span class="n">parse_bracket</span><span class="o">=</span><span class="n">parse_bracket</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-687"><a href="#ClickHouse.Parser-687"><span class="linenos">687</span></a> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_db_reference</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-688"><a href="#ClickHouse.Parser-688"><span class="linenos">688</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-689"><a href="#ClickHouse.Parser-689"><span class="linenos">689</span></a>
</span><span id="ClickHouse.Parser-690"><a href="#ClickHouse.Parser-690"><span class="linenos">690</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-691"><a href="#ClickHouse.Parser-691"><span class="linenos">691</span></a> <span class="n">inner</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span>
</span><span id="ClickHouse.Parser-692"><a href="#ClickHouse.Parser-692"><span class="linenos">692</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-693"><a href="#ClickHouse.Parser-693"><span class="linenos">693</span></a>
</span><span id="ClickHouse.Parser-694"><a href="#ClickHouse.Parser-694"><span class="linenos">694</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">inner</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">)</span> <span class="ow">and</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-695"><a href="#ClickHouse.Parser-695"><span class="linenos">695</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="s2">&quot;generate_series&quot;</span><span class="p">)])</span>
</span><span id="ClickHouse.Parser-696"><a href="#ClickHouse.Parser-696"><span class="linenos">696</span></a>
</span><span id="ClickHouse.Parser-697"><a href="#ClickHouse.Parser-697"><span class="linenos">697</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-698"><a href="#ClickHouse.Parser-698"><span class="linenos">698</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Final</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-699"><a href="#ClickHouse.Parser-699"><span class="linenos">699</span></a>
</span><span id="ClickHouse.Parser-700"><a href="#ClickHouse.Parser-700"><span class="linenos">700</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse.Parser-701"><a href="#ClickHouse.Parser-701"><span class="linenos">701</span></a>
</span><span id="ClickHouse.Parser-702"><a href="#ClickHouse.Parser-702"><span class="linenos">702</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-703"><a href="#ClickHouse.Parser-703"><span class="linenos">703</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(</span><span class="n">haystack_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-704"><a href="#ClickHouse.Parser-704"><span class="linenos">704</span></a>
</span><span id="ClickHouse.Parser-705"><a href="#ClickHouse.Parser-705"><span class="linenos">705</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/with/</span>
</span><span id="ClickHouse.Parser-706"><a href="#ClickHouse.Parser-706"><span class="linenos">706</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-707"><a href="#ClickHouse.Parser-707"><span class="linenos">707</span></a> <span class="c1"># WITH &lt;identifier&gt; AS &lt;subquery expression&gt;</span>
</span><span id="ClickHouse.Parser-708"><a href="#ClickHouse.Parser-708"><span class="linenos">708</span></a> <span class="n">cte</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_try_parse</span><span class="p">(</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_cte</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-709"><a href="#ClickHouse.Parser-709"><span class="linenos">709</span></a>
</span><span id="ClickHouse.Parser-710"><a href="#ClickHouse.Parser-710"><span class="linenos">710</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">cte</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-711"><a href="#ClickHouse.Parser-711"><span class="linenos">711</span></a> <span class="c1"># WITH &lt;expression&gt; AS &lt;identifier&gt;</span>
</span><span id="ClickHouse.Parser-712"><a href="#ClickHouse.Parser-712"><span class="linenos">712</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-713"><a href="#ClickHouse.Parser-713"><span class="linenos">713</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-714"><a href="#ClickHouse.Parser-714"><span class="linenos">714</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-715"><a href="#ClickHouse.Parser-715"><span class="linenos">715</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-716"><a href="#ClickHouse.Parser-716"><span class="linenos">716</span></a> <span class="n">scalar</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-717"><a href="#ClickHouse.Parser-717"><span class="linenos">717</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-718"><a href="#ClickHouse.Parser-718"><span class="linenos">718</span></a>
</span><span id="ClickHouse.Parser-719"><a href="#ClickHouse.Parser-719"><span class="linenos">719</span></a> <span class="k">return</span> <span class="n">cte</span>
</span><span id="ClickHouse.Parser-720"><a href="#ClickHouse.Parser-720"><span class="linenos">720</span></a>
</span><span id="ClickHouse.Parser-721"><a href="#ClickHouse.Parser-721"><span class="linenos">721</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_join_parts</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-722"><a href="#ClickHouse.Parser-722"><span class="linenos">722</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-723"><a href="#ClickHouse.Parser-723"><span class="linenos">723</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]]:</span>
</span><span id="ClickHouse.Parser-724"><a href="#ClickHouse.Parser-724"><span class="linenos">724</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GLOBAL</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse.Parser-725"><a href="#ClickHouse.Parser-725"><span class="linenos">725</span></a> <span class="n">kind_pre</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse.Parser-726"><a href="#ClickHouse.Parser-726"><span class="linenos">726</span></a>
</span><span id="ClickHouse.Parser-727"><a href="#ClickHouse.Parser-727"><span class="linenos">727</span></a> <span class="k">if</span> <span class="n">kind_pre</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-728"><a href="#ClickHouse.Parser-728"><span class="linenos">728</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse.Parser-729"><a href="#ClickHouse.Parser-729"><span class="linenos">729</span></a> <span class="n">side</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span>
</span><span id="ClickHouse.Parser-730"><a href="#ClickHouse.Parser-730"><span class="linenos">730</span></a> <span class="k">return</span> <span class="n">is_global</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span>
</span><span id="ClickHouse.Parser-731"><a href="#ClickHouse.Parser-731"><span class="linenos">731</span></a>
</span><span id="ClickHouse.Parser-732"><a href="#ClickHouse.Parser-732"><span class="linenos">732</span></a> <span class="k">return</span> <span class="p">(</span>
</span><span id="ClickHouse.Parser-733"><a href="#ClickHouse.Parser-733"><span class="linenos">733</span></a> <span class="n">is_global</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-734"><a href="#ClickHouse.Parser-734"><span class="linenos">734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-735"><a href="#ClickHouse.Parser-735"><span class="linenos">735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-736"><a href="#ClickHouse.Parser-736"><span class="linenos">736</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-737"><a href="#ClickHouse.Parser-737"><span class="linenos">737</span></a>
</span><span id="ClickHouse.Parser-738"><a href="#ClickHouse.Parser-738"><span class="linenos">738</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_join</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-739"><a href="#ClickHouse.Parser-739"><span class="linenos">739</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Parser-740"><a href="#ClickHouse.Parser-740"><span class="linenos">740</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-741"><a href="#ClickHouse.Parser-741"><span class="linenos">741</span></a> <span class="n">join</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(</span><span class="n">skip_join_token</span><span class="o">=</span><span class="n">skip_join_token</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-742"><a href="#ClickHouse.Parser-742"><span class="linenos">742</span></a> <span class="k">if</span> <span class="n">join</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-743"><a href="#ClickHouse.Parser-743"><span class="linenos">743</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;global&quot;</span><span class="p">,</span> <span class="n">join</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;method&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
</span><span id="ClickHouse.Parser-744"><a href="#ClickHouse.Parser-744"><span class="linenos">744</span></a>
</span><span id="ClickHouse.Parser-745"><a href="#ClickHouse.Parser-745"><span class="linenos">745</span></a> <span class="c1"># tbl ARRAY JOIN arr &lt;-- this should be a `Column` reference, not a `Table`</span>
</span><span id="ClickHouse.Parser-746"><a href="#ClickHouse.Parser-746"><span class="linenos">746</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/array-join</span>
</span><span id="ClickHouse.Parser-747"><a href="#ClickHouse.Parser-747"><span class="linenos">747</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;ARRAY&quot;</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-748"><a href="#ClickHouse.Parser-748"><span class="linenos">748</span></a> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="n">join</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-749"><a href="#ClickHouse.Parser-749"><span class="linenos">749</span></a> <span class="n">table</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">table</span><span class="o">.</span><span class="n">to_column</span><span class="p">())</span>
</span><span id="ClickHouse.Parser-750"><a href="#ClickHouse.Parser-750"><span class="linenos">750</span></a>
</span><span id="ClickHouse.Parser-751"><a href="#ClickHouse.Parser-751"><span class="linenos">751</span></a> <span class="k">return</span> <span class="n">join</span>
</span><span id="ClickHouse.Parser-752"><a href="#ClickHouse.Parser-752"><span class="linenos">752</span></a>
</span><span id="ClickHouse.Parser-753"><a href="#ClickHouse.Parser-753"><span class="linenos">753</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_function</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-754"><a href="#ClickHouse.Parser-754"><span class="linenos">754</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-755"><a href="#ClickHouse.Parser-755"><span class="linenos">755</span></a> <span class="n">functions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-756"><a href="#ClickHouse.Parser-756"><span class="linenos">756</span></a> <span class="n">anonymous</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-757"><a href="#ClickHouse.Parser-757"><span class="linenos">757</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-758"><a href="#ClickHouse.Parser-758"><span class="linenos">758</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-759"><a href="#ClickHouse.Parser-759"><span class="linenos">759</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-760"><a href="#ClickHouse.Parser-760"><span class="linenos">760</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-761"><a href="#ClickHouse.Parser-761"><span class="linenos">761</span></a> <span class="n">functions</span><span class="o">=</span><span class="n">functions</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-762"><a href="#ClickHouse.Parser-762"><span class="linenos">762</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-763"><a href="#ClickHouse.Parser-763"><span class="linenos">763</span></a> <span class="n">optional_parens</span><span class="o">=</span><span class="n">optional_parens</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-764"><a href="#ClickHouse.Parser-764"><span class="linenos">764</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-765"><a href="#ClickHouse.Parser-765"><span class="linenos">765</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-766"><a href="#ClickHouse.Parser-766"><span class="linenos">766</span></a>
</span><span id="ClickHouse.Parser-767"><a href="#ClickHouse.Parser-767"><span class="linenos">767</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">expr</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span>
</span><span id="ClickHouse.Parser-768"><a href="#ClickHouse.Parser-768"><span class="linenos">768</span></a>
</span><span id="ClickHouse.Parser-769"><a href="#ClickHouse.Parser-769"><span class="linenos">769</span></a> <span class="c1"># Aggregate functions can be split in 2 parts: &lt;func_name&gt;&lt;suffix&gt;</span>
</span><span id="ClickHouse.Parser-770"><a href="#ClickHouse.Parser-770"><span class="linenos">770</span></a> <span class="n">parts</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse.Parser-771"><a href="#ClickHouse.Parser-771"><span class="linenos">771</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">AGG_FUNC_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">func</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-772"><a href="#ClickHouse.Parser-772"><span class="linenos">772</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-773"><a href="#ClickHouse.Parser-773"><span class="linenos">773</span></a>
</span><span id="ClickHouse.Parser-774"><a href="#ClickHouse.Parser-774"><span class="linenos">774</span></a> <span class="k">if</span> <span class="n">parts</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-775"><a href="#ClickHouse.Parser-775"><span class="linenos">775</span></a> <span class="n">anon_func</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-776"><a href="#ClickHouse.Parser-776"><span class="linenos">776</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_func_params</span><span class="p">(</span><span class="n">anon_func</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-777"><a href="#ClickHouse.Parser-777"><span class="linenos">777</span></a>
</span><span id="ClickHouse.Parser-778"><a href="#ClickHouse.Parser-778"><span class="linenos">778</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Parser-779"><a href="#ClickHouse.Parser-779"><span class="linenos">779</span></a> <span class="s2">&quot;this&quot;</span><span class="p">:</span> <span class="n">anon_func</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-780"><a href="#ClickHouse.Parser-780"><span class="linenos">780</span></a> <span class="s2">&quot;expressions&quot;</span><span class="p">:</span> <span class="n">anon_func</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-781"><a href="#ClickHouse.Parser-781"><span class="linenos">781</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Parser-782"><a href="#ClickHouse.Parser-782"><span class="linenos">782</span></a> <span class="k">if</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-783"><a href="#ClickHouse.Parser-783"><span class="linenos">783</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="ClickHouse.Parser-784"><a href="#ClickHouse.Parser-784"><span class="linenos">784</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedParameterizedAgg</span> <span class="k">if</span> <span class="n">params</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">CombinedAggFunc</span>
</span><span id="ClickHouse.Parser-785"><a href="#ClickHouse.Parser-785"><span class="linenos">785</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-786"><a href="#ClickHouse.Parser-786"><span class="linenos">786</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-787"><a href="#ClickHouse.Parser-787"><span class="linenos">787</span></a> <span class="n">exp_class</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">ParameterizedAgg</span> <span class="k">if</span> <span class="n">params</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnonymousAggFunc</span>
</span><span id="ClickHouse.Parser-788"><a href="#ClickHouse.Parser-788"><span class="linenos">788</span></a>
</span><span id="ClickHouse.Parser-789"><a href="#ClickHouse.Parser-789"><span class="linenos">789</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;exp_class&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp_class</span>
</span><span id="ClickHouse.Parser-790"><a href="#ClickHouse.Parser-790"><span class="linenos">790</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-791"><a href="#ClickHouse.Parser-791"><span class="linenos">791</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">params</span>
</span><span id="ClickHouse.Parser-792"><a href="#ClickHouse.Parser-792"><span class="linenos">792</span></a>
</span><span id="ClickHouse.Parser-793"><a href="#ClickHouse.Parser-793"><span class="linenos">793</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-794"><a href="#ClickHouse.Parser-794"><span class="linenos">794</span></a>
</span><span id="ClickHouse.Parser-795"><a href="#ClickHouse.Parser-795"><span class="linenos">795</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-796"><a href="#ClickHouse.Parser-796"><span class="linenos">796</span></a> <span class="c1"># The window&#39;s func was parsed as Anonymous in base parser, fix its</span>
</span><span id="ClickHouse.Parser-797"><a href="#ClickHouse.Parser-797"><span class="linenos">797</span></a> <span class="c1"># type to be ClickHouse style CombinedAnonymousAggFunc / AnonymousAggFunc</span>
</span><span id="ClickHouse.Parser-798"><a href="#ClickHouse.Parser-798"><span class="linenos">798</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-799"><a href="#ClickHouse.Parser-799"><span class="linenos">799</span></a> <span class="k">elif</span> <span class="n">params</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-800"><a href="#ClickHouse.Parser-800"><span class="linenos">800</span></a> <span class="c1"># Params have blocked super()._parse_function() from parsing the following window</span>
</span><span id="ClickHouse.Parser-801"><a href="#ClickHouse.Parser-801"><span class="linenos">801</span></a> <span class="c1"># (if that exists) as they&#39;re standing between the function call and the window spec</span>
</span><span id="ClickHouse.Parser-802"><a href="#ClickHouse.Parser-802"><span class="linenos">802</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-803"><a href="#ClickHouse.Parser-803"><span class="linenos">803</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-804"><a href="#ClickHouse.Parser-804"><span class="linenos">804</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">func</span>
</span><span id="ClickHouse.Parser-805"><a href="#ClickHouse.Parser-805"><span class="linenos">805</span></a>
</span><span id="ClickHouse.Parser-806"><a href="#ClickHouse.Parser-806"><span class="linenos">806</span></a> <span class="k">return</span> <span class="n">expr</span>
</span><span id="ClickHouse.Parser-807"><a href="#ClickHouse.Parser-807"><span class="linenos">807</span></a>
</span><span id="ClickHouse.Parser-808"><a href="#ClickHouse.Parser-808"><span class="linenos">808</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_func_params</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-809"><a href="#ClickHouse.Parser-809"><span class="linenos">809</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-810"><a href="#ClickHouse.Parser-810"><span class="linenos">810</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
</span><span id="ClickHouse.Parser-811"><a href="#ClickHouse.Parser-811"><span class="linenos">811</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-812"><a href="#ClickHouse.Parser-812"><span class="linenos">812</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-813"><a href="#ClickHouse.Parser-813"><span class="linenos">813</span></a>
</span><span id="ClickHouse.Parser-814"><a href="#ClickHouse.Parser-814"><span class="linenos">814</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-815"><a href="#ClickHouse.Parser-815"><span class="linenos">815</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-816"><a href="#ClickHouse.Parser-816"><span class="linenos">816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-817"><a href="#ClickHouse.Parser-817"><span class="linenos">817</span></a> <span class="k">return</span> <span class="n">params</span>
</span><span id="ClickHouse.Parser-818"><a href="#ClickHouse.Parser-818"><span class="linenos">818</span></a>
</span><span id="ClickHouse.Parser-819"><a href="#ClickHouse.Parser-819"><span class="linenos">819</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-820"><a href="#ClickHouse.Parser-820"><span class="linenos">820</span></a>
</span><span id="ClickHouse.Parser-821"><a href="#ClickHouse.Parser-821"><span class="linenos">821</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_quantile</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-822"><a href="#ClickHouse.Parser-822"><span class="linenos">822</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-823"><a href="#ClickHouse.Parser-823"><span class="linenos">823</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_func_params</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-824"><a href="#ClickHouse.Parser-824"><span class="linenos">824</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-825"><a href="#ClickHouse.Parser-825"><span class="linenos">825</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">params</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">quantile</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-826"><a href="#ClickHouse.Parser-826"><span class="linenos">826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">quantile</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">0.5</span><span class="p">))</span>
</span><span id="ClickHouse.Parser-827"><a href="#ClickHouse.Parser-827"><span class="linenos">827</span></a>
</span><span id="ClickHouse.Parser-828"><a href="#ClickHouse.Parser-828"><span class="linenos">828</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-829"><a href="#ClickHouse.Parser-829"><span class="linenos">829</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(</span><span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-830"><a href="#ClickHouse.Parser-830"><span class="linenos">830</span></a>
</span><span id="ClickHouse.Parser-831"><a href="#ClickHouse.Parser-831"><span class="linenos">831</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_primary_key</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-832"><a href="#ClickHouse.Parser-832"><span class="linenos">832</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">wrapped_optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">in_props</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Parser-833"><a href="#ClickHouse.Parser-833"><span class="linenos">833</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-834"><a href="#ClickHouse.Parser-834"><span class="linenos">834</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-835"><a href="#ClickHouse.Parser-835"><span class="linenos">835</span></a> <span class="n">wrapped_optional</span><span class="o">=</span><span class="n">wrapped_optional</span> <span class="ow">or</span> <span class="n">in_props</span><span class="p">,</span> <span class="n">in_props</span><span class="o">=</span><span class="n">in_props</span>
</span><span id="ClickHouse.Parser-836"><a href="#ClickHouse.Parser-836"><span class="linenos">836</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-837"><a href="#ClickHouse.Parser-837"><span class="linenos">837</span></a>
</span><span id="ClickHouse.Parser-838"><a href="#ClickHouse.Parser-838"><span class="linenos">838</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_on_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-839"><a href="#ClickHouse.Parser-839"><span class="linenos">839</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span>
</span><span id="ClickHouse.Parser-840"><a href="#ClickHouse.Parser-840"><span class="linenos">840</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;CLUSTER&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-841"><a href="#ClickHouse.Parser-841"><span class="linenos">841</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-842"><a href="#ClickHouse.Parser-842"><span class="linenos">842</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-843"><a href="#ClickHouse.Parser-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-844"><a href="#ClickHouse.Parser-844"><span class="linenos">844</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-845"><a href="#ClickHouse.Parser-845"><span class="linenos">845</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-846"><a href="#ClickHouse.Parser-846"><span class="linenos">846</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-847"><a href="#ClickHouse.Parser-847"><span class="linenos">847</span></a>
</span><span id="ClickHouse.Parser-848"><a href="#ClickHouse.Parser-848"><span class="linenos">848</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_index_constraint</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-849"><a href="#ClickHouse.Parser-849"><span class="linenos">849</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-850"><a href="#ClickHouse.Parser-850"><span class="linenos">850</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-851"><a href="#ClickHouse.Parser-851"><span class="linenos">851</span></a> <span class="c1"># INDEX name1 expr TYPE type1(args) GRANULARITY value</span>
</span><span id="ClickHouse.Parser-852"><a href="#ClickHouse.Parser-852"><span class="linenos">852</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-853"><a href="#ClickHouse.Parser-853"><span class="linenos">853</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-854"><a href="#ClickHouse.Parser-854"><span class="linenos">854</span></a>
</span><span id="ClickHouse.Parser-855"><a href="#ClickHouse.Parser-855"><span class="linenos">855</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;TYPE&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span>
</span><span id="ClickHouse.Parser-856"><a href="#ClickHouse.Parser-856"><span class="linenos">856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-857"><a href="#ClickHouse.Parser-857"><span class="linenos">857</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-858"><a href="#ClickHouse.Parser-858"><span class="linenos">858</span></a>
</span><span id="ClickHouse.Parser-859"><a href="#ClickHouse.Parser-859"><span class="linenos">859</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;GRANULARITY&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-860"><a href="#ClickHouse.Parser-860"><span class="linenos">860</span></a>
</span><span id="ClickHouse.Parser-861"><a href="#ClickHouse.Parser-861"><span class="linenos">861</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-862"><a href="#ClickHouse.Parser-862"><span class="linenos">862</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-863"><a href="#ClickHouse.Parser-863"><span class="linenos">863</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-864"><a href="#ClickHouse.Parser-864"><span class="linenos">864</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-865"><a href="#ClickHouse.Parser-865"><span class="linenos">865</span></a> <span class="n">index_type</span><span class="o">=</span><span class="n">index_type</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-866"><a href="#ClickHouse.Parser-866"><span class="linenos">866</span></a> <span class="n">granularity</span><span class="o">=</span><span class="n">granularity</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-867"><a href="#ClickHouse.Parser-867"><span class="linenos">867</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-868"><a href="#ClickHouse.Parser-868"><span class="linenos">868</span></a>
</span><span id="ClickHouse.Parser-869"><a href="#ClickHouse.Parser-869"><span class="linenos">869</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-870"><a href="#ClickHouse.Parser-870"><span class="linenos">870</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#how-to-set-partition-expression</span>
</span><span id="ClickHouse.Parser-871"><a href="#ClickHouse.Parser-871"><span class="linenos">871</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-872"><a href="#ClickHouse.Parser-872"><span class="linenos">872</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-873"><a href="#ClickHouse.Parser-873"><span class="linenos">873</span></a>
</span><span id="ClickHouse.Parser-874"><a href="#ClickHouse.Parser-874"><span class="linenos">874</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;ID&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-875"><a href="#ClickHouse.Parser-875"><span class="linenos">875</span></a> <span class="c1"># Corresponds to the PARTITION ID &lt;string_value&gt; syntax</span>
</span><span id="ClickHouse.Parser-876"><a href="#ClickHouse.Parser-876"><span class="linenos">876</span></a> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="ClickHouse.Parser-877"><a href="#ClickHouse.Parser-877"><span class="linenos">877</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PartitionId</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span>
</span><span id="ClickHouse.Parser-878"><a href="#ClickHouse.Parser-878"><span class="linenos">878</span></a> <span class="p">]</span>
</span><span id="ClickHouse.Parser-879"><a href="#ClickHouse.Parser-879"><span class="linenos">879</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-880"><a href="#ClickHouse.Parser-880"><span class="linenos">880</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-881"><a href="#ClickHouse.Parser-881"><span class="linenos">881</span></a>
</span><span id="ClickHouse.Parser-882"><a href="#ClickHouse.Parser-882"><span class="linenos">882</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-883"><a href="#ClickHouse.Parser-883"><span class="linenos">883</span></a>
</span><span id="ClickHouse.Parser-884"><a href="#ClickHouse.Parser-884"><span class="linenos">884</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_alter_table_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-885"><a href="#ClickHouse.Parser-885"><span class="linenos">885</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-886"><a href="#ClickHouse.Parser-886"><span class="linenos">886</span></a>
</span><span id="ClickHouse.Parser-887"><a href="#ClickHouse.Parser-887"><span class="linenos">887</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-888"><a href="#ClickHouse.Parser-888"><span class="linenos">888</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-889"><a href="#ClickHouse.Parser-889"><span class="linenos">889</span></a>
</span><span id="ClickHouse.Parser-890"><a href="#ClickHouse.Parser-890"><span class="linenos">890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-891"><a href="#ClickHouse.Parser-891"><span class="linenos">891</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReplacePartition</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-892"><a href="#ClickHouse.Parser-892"><span class="linenos">892</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-893"><a href="#ClickHouse.Parser-893"><span class="linenos">893</span></a>
</span><span id="ClickHouse.Parser-894"><a href="#ClickHouse.Parser-894"><span class="linenos">894</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_projection_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-895"><a href="#ClickHouse.Parser-895"><span class="linenos">895</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;PROJECTION&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-896"><a href="#ClickHouse.Parser-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-897"><a href="#ClickHouse.Parser-897"><span class="linenos">897</span></a>
</span><span id="ClickHouse.Parser-898"><a href="#ClickHouse.Parser-898"><span class="linenos">898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-899"><a href="#ClickHouse.Parser-899"><span class="linenos">899</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-900"><a href="#ClickHouse.Parser-900"><span class="linenos">900</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span>
</span><span id="ClickHouse.Parser-901"><a href="#ClickHouse.Parser-901"><span class="linenos">901</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span>
</span><span id="ClickHouse.Parser-902"><a href="#ClickHouse.Parser-902"><span class="linenos">902</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-903"><a href="#ClickHouse.Parser-903"><span class="linenos">903</span></a>
</span><span id="ClickHouse.Parser-904"><a href="#ClickHouse.Parser-904"><span class="linenos">904</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-905"><a href="#ClickHouse.Parser-905"><span class="linenos">905</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_projection_def</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-906"><a href="#ClickHouse.Parser-906"><span class="linenos">906</span></a>
</span><span id="ClickHouse.Parser-907"><a href="#ClickHouse.Parser-907"><span class="linenos">907</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_alias</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-908"><a href="#ClickHouse.Parser-908"><span class="linenos">908</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Parser-909"><a href="#ClickHouse.Parser-909"><span class="linenos">909</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-910"><a href="#ClickHouse.Parser-910"><span class="linenos">910</span></a> <span class="c1"># In clickhouse &quot;SELECT &lt;expr&gt; APPLY(...)&quot; is a query modifier,</span>
</span><span id="ClickHouse.Parser-911"><a href="#ClickHouse.Parser-911"><span class="linenos">911</span></a> <span class="c1"># so &quot;APPLY&quot; shouldn&#39;t be parsed as &lt;expr&gt;&#39;s alias. However, &quot;SELECT &lt;expr&gt; apply&quot; is a valid alias</span>
</span><span id="ClickHouse.Parser-912"><a href="#ClickHouse.Parser-912"><span class="linenos">912</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-913"><a href="#ClickHouse.Parser-913"><span class="linenos">913</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse.Parser-914"><a href="#ClickHouse.Parser-914"><span class="linenos">914</span></a>
</span><span id="ClickHouse.Parser-915"><a href="#ClickHouse.Parser-915"><span class="linenos">915</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">explicit</span><span class="o">=</span><span class="n">explicit</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-916"><a href="#ClickHouse.Parser-916"><span class="linenos">916</span></a>
</span><span id="ClickHouse.Parser-917"><a href="#ClickHouse.Parser-917"><span class="linenos">917</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-918"><a href="#ClickHouse.Parser-918"><span class="linenos">918</span></a> <span class="n">this</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span>
</span><span id="ClickHouse.Parser-919"><a href="#ClickHouse.Parser-919"><span class="linenos">919</span></a>
</span><span id="ClickHouse.Parser-920"><a href="#ClickHouse.Parser-920"><span class="linenos">920</span></a> <span class="c1"># Clickhouse allows &quot;SELECT &lt;expr&gt; [APPLY(func)] [...]]&quot; modifier</span>
</span><span id="ClickHouse.Parser-921"><a href="#ClickHouse.Parser-921"><span class="linenos">921</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-922"><a href="#ClickHouse.Parser-922"><span class="linenos">922</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Apply</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
</span><span id="ClickHouse.Parser-923"><a href="#ClickHouse.Parser-923"><span class="linenos">923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-924"><a href="#ClickHouse.Parser-924"><span class="linenos">924</span></a>
</span><span id="ClickHouse.Parser-925"><a href="#ClickHouse.Parser-925"><span class="linenos">925</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse.Parser-926"><a href="#ClickHouse.Parser-926"><span class="linenos">926</span></a>
</span><span id="ClickHouse.Parser-927"><a href="#ClickHouse.Parser-927"><span class="linenos">927</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-928"><a href="#ClickHouse.Parser-928"><span class="linenos">928</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Columns</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">())</span>
</span><span id="ClickHouse.Parser-929"><a href="#ClickHouse.Parser-929"><span class="linenos">929</span></a>
</span><span id="ClickHouse.Parser-930"><a href="#ClickHouse.Parser-930"><span class="linenos">930</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">&quot;)&quot;</span><span class="p">,</span> <span class="s2">&quot;APPLY&quot;</span><span class="p">,</span> <span class="s2">&quot;(&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-931"><a href="#ClickHouse.Parser-931"><span class="linenos">931</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-932"><a href="#ClickHouse.Parser-932"><span class="linenos">932</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Apply</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
</span><span id="ClickHouse.Parser-933"><a href="#ClickHouse.Parser-933"><span class="linenos">933</span></a> <span class="k">return</span> <span class="n">this</span>
</span><span id="ClickHouse.Parser-934"><a href="#ClickHouse.Parser-934"><span class="linenos">934</span></a>
</span><span id="ClickHouse.Parser-935"><a href="#ClickHouse.Parser-935"><span class="linenos">935</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">]:</span>
</span><span id="ClickHouse.Parser-936"><a href="#ClickHouse.Parser-936"><span class="linenos">936</span></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(</span><span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">)</span>
</span><span id="ClickHouse.Parser-937"><a href="#ClickHouse.Parser-937"><span class="linenos">937</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
</span><span id="ClickHouse.Parser-938"><a href="#ClickHouse.Parser-938"><span class="linenos">938</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="ClickHouse.Parser-939"><a href="#ClickHouse.Parser-939"><span class="linenos">939</span></a>
</span><span id="ClickHouse.Parser-940"><a href="#ClickHouse.Parser-940"><span class="linenos">940</span></a> <span class="c1"># In Clickhouse &quot;SELECT * FROM VALUES (1, 2, 3)&quot; generates a table with a single column, in contrast</span>
</span><span id="ClickHouse.Parser-941"><a href="#ClickHouse.Parser-941"><span class="linenos">941</span></a> <span class="c1"># to other dialects. For this case, we canonicalize the values into a tuple-of-tuples AST if it&#39;s not already one.</span>
</span><span id="ClickHouse.Parser-942"><a href="#ClickHouse.Parser-942"><span class="linenos">942</span></a> <span class="c1"># In INSERT INTO statements the same clause actually references multiple columns (opposite semantics),</span>
</span><span id="ClickHouse.Parser-943"><a href="#ClickHouse.Parser-943"><span class="linenos">943</span></a> <span class="c1"># but the final result is not altered by the extra parentheses.</span>
</span><span id="ClickHouse.Parser-944"><a href="#ClickHouse.Parser-944"><span class="linenos">944</span></a> <span class="c1"># Note: Clickhouse allows VALUES([structure], value, ...) so the branch checks for the last expression</span>
</span><span id="ClickHouse.Parser-945"><a href="#ClickHouse.Parser-945"><span class="linenos">945</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="ClickHouse.Parser-946"><a href="#ClickHouse.Parser-946"><span class="linenos">946</span></a> <span class="k">if</span> <span class="n">values</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">):</span>
</span><span id="ClickHouse.Parser-947"><a href="#ClickHouse.Parser-947"><span class="linenos">947</span></a> <span class="n">value</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
</span><span id="ClickHouse.Parser-948"><a href="#ClickHouse.Parser-948"><span class="linenos">948</span></a> <span class="s2">&quot;expressions&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Parser-949"><a href="#ClickHouse.Parser-949"><span class="linenos">949</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expr</span><span class="p">])</span> <span class="k">for</span> <span class="n">expr</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">],</span>
</span><span id="ClickHouse.Parser-950"><a href="#ClickHouse.Parser-950"><span class="linenos">950</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Parser-951"><a href="#ClickHouse.Parser-951"><span class="linenos">951</span></a>
</span><span id="ClickHouse.Parser-952"><a href="#ClickHouse.Parser-952"><span class="linenos">952</span></a> <span class="k">return</span> <span class="n">value</span>
</span></pre></div>
<div class="docstring"><p>Parser consumes a list of tokens produced by the Tokenizer and produces a parsed syntax tree.</p>
<h6 id="arguments">Arguments:</h6>
<ul>
<li><strong>error_level:</strong> The desired error level.
Default: ErrorLevel.IMMEDIATE</li>
<li><strong>error_message_context:</strong> The amount of context to capture from a query string when displaying
the error message (in number of characters).
Default: 100</li>
<li><strong>max_errors:</strong> Maximum number of error messages to include in a raised ParseError.
This is only relevant if error_level is ErrorLevel.RAISE.
Default: 3</li>
</ul>
</div>
<div id="ClickHouse.Parser.MODIFIERS_ATTACHED_TO_SET_OP" class="classattr">
<div class="attr variable">
<span class="name">MODIFIERS_ATTACHED_TO_SET_OP</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.MODIFIERS_ATTACHED_TO_SET_OP"></a>
</div>
<div id="ClickHouse.Parser.INTERVAL_SPANS" class="classattr">
<div class="attr variable">
<span class="name">INTERVAL_SPANS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.INTERVAL_SPANS"></a>
</div>
<div id="ClickHouse.Parser.OPTIONAL_ALIAS_TOKEN_CTE" class="classattr">
<div class="attr variable">
<span class="name">OPTIONAL_ALIAS_TOKEN_CTE</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.OPTIONAL_ALIAS_TOKEN_CTE"></a>
</div>
<div id="ClickHouse.Parser.FUNCTIONS" class="classattr">
<div class="attr variable">
<span class="name">FUNCTIONS</span> =
<input id="ClickHouse.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.FUNCTIONS-view-value"></label><span class="default_value">{&#39;ABS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>&#39;&gt;&gt;, &#39;ADD_MONTHS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>&#39;&gt;&gt;, &#39;AND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#And">sqlglot.expressions.And</a>&#39;&gt;&gt;, &#39;ANONYMOUS_AGG_FUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>&#39;&gt;&gt;, &#39;ANY_VALUE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>&#39;&gt;&gt;, &#39;APPLY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Apply">sqlglot.expressions.Apply</a>&#39;&gt;&gt;, &#39;APPROX_DISTINCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;&gt;, &#39;APPROX_COUNT_DISTINCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;&gt;, &#39;APPROX_QUANTILE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>&#39;&gt;&gt;, &#39;APPROX_TOP_K&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>&#39;&gt;&gt;, &#39;ARG_MAX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>&#39;&gt;&gt;, &#39;ARGMAX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>&#39;&gt;&gt;, &#39;MAX_BY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>&#39;&gt;&gt;, &#39;ARG_MIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>&#39;&gt;&gt;, &#39;ARGMIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>&#39;&gt;&gt;, &#39;MIN_BY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>&#39;&gt;&gt;, &#39;ARRAY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ARRAY_AGG&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ARRAY_ALL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>&#39;&gt;&gt;, &#39;ARRAY_ANY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>&#39;&gt;&gt;, &#39;ARRAY_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>&#39;&gt;&gt;, &#39;ARRAY_CAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>&#39;&gt;&gt;, &#39;ARRAY_CONSTRUCT_COMPACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>&#39;&gt;&gt;, &#39;ARRAY_CONTAINS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>&#39;&gt;&gt;, &#39;ARRAY_HAS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>&#39;&gt;&gt;, &#39;ARRAY_CONTAINS_ALL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>&#39;&gt;&gt;, &#39;ARRAY_HAS_ALL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>&#39;&gt;&gt;, &#39;FILTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>&#39;&gt;&gt;, &#39;ARRAY_FILTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>&#39;&gt;&gt;, &#39;ARRAY_OVERLAPS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>&#39;&gt;&gt;, &#39;ARRAY_SIZE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>&#39;&gt;&gt;, &#39;ARRAY_LENGTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>&#39;&gt;&gt;, &#39;ARRAY_SORT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>&#39;&gt;&gt;, &#39;ARRAY_SUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>&#39;&gt;&gt;, &#39;ARRAY_TO_STRING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>&#39;&gt;&gt;, &#39;ARRAY_JOIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>&#39;&gt;&gt;, &#39;ARRAY_UNION_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>&#39;&gt;&gt;, &#39;ARRAY_UNIQUE_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>&#39;&gt;&gt;, &#39;AVG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>&#39;&gt;&gt;, &#39;CASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Case">sqlglot.expressions.Case</a>&#39;&gt;&gt;, &#39;CAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>&#39;&gt;&gt;, &#39;CAST_TO_STR_TYPE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>&#39;&gt;&gt;, &#39;CBRT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>&#39;&gt;&gt;, &#39;CEIL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;&gt;, &#39;CEILING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;&gt;, &#39;CHR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CHAR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COALESCE&#39;: &lt;function build_coalesce&gt;, &#39;IFNULL&#39;: &lt;function build_coalesce&gt;, &#39;NVL&#39;: &lt;function build_coalesce&gt;, &#39;COLLATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>&#39;&gt;&gt;, &#39;COLUMNS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Columns">sqlglot.expressions.Columns</a>&#39;&gt;&gt;, &#39;COMBINED_AGG_FUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>&#39;&gt;&gt;, &#39;COMBINED_PARAMETERIZED_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>&#39;&gt;&gt;, &#39;CONCAT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CONCAT_WS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CONNECT_BY_ROOT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>&#39;&gt;&gt;, &#39;CONTAINS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Contains">sqlglot.expressions.Contains</a>&#39;&gt;&gt;, &#39;CONVERT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>&#39;&gt;&gt;, &#39;CONVERT_TIMEZONE&#39;: &lt;function build_convert_timezone&gt;, &#39;CORR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>&#39;&gt;&gt;, &#39;COUNT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COUNT_IF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>&#39;&gt;&gt;, &#39;COUNTIF&#39;: &lt;function _build_count_if&gt;, &#39;COVAR_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>&#39;&gt;&gt;, &#39;COVAR_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>&#39;&gt;&gt;, &#39;CURRENT_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>&#39;&gt;&gt;, &#39;CURRENT_DATETIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>&#39;&gt;&gt;, &#39;CURRENT_SCHEMA&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentSchema">sqlglot.expressions.CurrentSchema</a>&#39;&gt;&gt;, &#39;CURRENT_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>&#39;&gt;&gt;, &#39;CURRENT_TIMESTAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>&#39;&gt;&gt;, &#39;CURRENT_USER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>&#39;&gt;&gt;, &#39;DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Date">sqlglot.expressions.Date</a>&#39;&gt;&gt;, &#39;DATE_ADD&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;DATE_BIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateBin">sqlglot.expressions.DateBin</a>&#39;&gt;&gt;, &#39;DATEDIFF&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;DATE_DIFF&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;DATE_FROM_PARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>&#39;&gt;&gt;, &#39;DATEFROMPARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>&#39;&gt;&gt;, &#39;DATE_STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>&#39;&gt;&gt;, &#39;DATE_SUB&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;DATE_TO_DATE_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DATE_TO_DI&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>&#39;&gt;&gt;, &#39;DATE_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>&#39;&gt;&gt;, &#39;DATETIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Datetime">sqlglot.expressions.Datetime</a>&#39;&gt;&gt;, &#39;DATETIME_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>&#39;&gt;&gt;, &#39;DATETIME_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>&#39;&gt;&gt;, &#39;DATETIME_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>&#39;&gt;&gt;, &#39;DATETIME_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>&#39;&gt;&gt;, &#39;DAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Day">sqlglot.expressions.Day</a>&#39;&gt;&gt;, &#39;DAY_OF_MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>&#39;&gt;&gt;, &#39;DAYOFMONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>&#39;&gt;&gt;, &#39;DAY_OF_WEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>&#39;&gt;&gt;, &#39;DAYOFWEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>&#39;&gt;&gt;, &#39;DAYOFWEEK_ISO&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeekIso">sqlglot.expressions.DayOfWeekIso</a>&#39;&gt;&gt;, &#39;ISODOW&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeekIso">sqlglot.expressions.DayOfWeekIso</a>&#39;&gt;&gt;, &#39;DAY_OF_YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>&#39;&gt;&gt;, &#39;DAYOFYEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>&#39;&gt;&gt;, &#39;DECODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>&#39;&gt;&gt;, &#39;DI_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>&#39;&gt;&gt;, &#39;ENCODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>&#39;&gt;&gt;, &#39;EXISTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Exists">sqlglot.expressions.Exists</a>&#39;&gt;&gt;, &#39;EXP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>&#39;&gt;&gt;, &#39;EXPLODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>&#39;&gt;&gt;, &#39;EXPLODE_OUTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>&#39;&gt;&gt;, &#39;EXPLODING_GENERATE_SERIES&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ExplodingGenerateSeries">sqlglot.expressions.ExplodingGenerateSeries</a>&#39;&gt;&gt;, &#39;EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>&#39;&gt;&gt;, &#39;FEATURES_AT_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FeaturesAtTime">sqlglot.expressions.FeaturesAtTime</a>&#39;&gt;&gt;, &#39;FIRST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#First">sqlglot.expressions.First</a>&#39;&gt;&gt;, &#39;FIRST_VALUE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>&#39;&gt;&gt;, &#39;FLATTEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>&#39;&gt;&gt;, &#39;FLOOR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>&#39;&gt;&gt;, &#39;FROM_BASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>&#39;&gt;&gt;, &#39;FROM_BASE64&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>&#39;&gt;&gt;, &#39;FROM_ISO8601_TIMESTAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FromISO8601Timestamp">sqlglot.expressions.FromISO8601Timestamp</a>&#39;&gt;&gt;, &#39;GAP_FILL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>&#39;&gt;&gt;, &#39;GENERATE_DATE_ARRAY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;GENERATE_SERIES&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>&#39;&gt;&gt;, &#39;GENERATE_TIMESTAMP_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#GenerateTimestampArray">sqlglot.expressions.GenerateTimestampArray</a>&#39;&gt;&gt;, &#39;GREATEST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>&#39;&gt;&gt;, &#39;GROUP_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>&#39;&gt;&gt;, &#39;HEX&#39;: &lt;function build_hex&gt;, &#39;HLL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>&#39;&gt;&gt;, &#39;IF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#If">sqlglot.expressions.If</a>&#39;&gt;&gt;, &#39;IIF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#If">sqlglot.expressions.If</a>&#39;&gt;&gt;, &#39;INITCAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>&#39;&gt;&gt;, &#39;INLINE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Inline">sqlglot.expressions.Inline</a>&#39;&gt;&gt;, &#39;INT64&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Int64">sqlglot.expressions.Int64</a>&#39;&gt;&gt;, &#39;IS_ASCII&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#IsAscii">sqlglot.expressions.IsAscii</a>&#39;&gt;&gt;, &#39;IS_INF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>&#39;&gt;&gt;, &#39;ISINF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>&#39;&gt;&gt;, &#39;IS_NAN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>&#39;&gt;&gt;, &#39;ISNAN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>&#39;&gt;&gt;, &#39;J_S_O_N_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>&#39;&gt;&gt;, &#39;J_S_O_N_ARRAY_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>&#39;&gt;&gt;, &#39;JSON_ARRAY_CONTAINS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>&#39;&gt;&gt;, &#39;JSONB_CONTAINS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>&#39;&gt;&gt;, &#39;JSONB_EXISTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBExists">sqlglot.expressions.JSONBExists</a>&#39;&gt;&gt;, &#39;JSONB_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>&#39;&gt;&gt;, &#39;JSONB_EXTRACT_SCALAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>&#39;&gt;&gt;, &#39;J_S_O_N_B_OBJECT_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBObjectAgg">sqlglot.expressions.JSONBObjectAgg</a>&#39;&gt;&gt;, &#39;J_S_O_N_CAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONCast">sqlglot.expressions.JSONCast</a>&#39;&gt;&gt;, &#39;J_S_O_N_EXISTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONExists">sqlglot.expressions.JSONExists</a>&#39;&gt;&gt;, &#39;JSON_EXTRACT&#39;: &lt;function build_extract_json_with_path.&lt;locals&gt;._builder&gt;, &#39;JSON_EXTRACT_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONExtractArray">sqlglot.expressions.JSONExtractArray</a>&#39;&gt;&gt;, &#39;JSON_EXTRACT_SCALAR&#39;: &lt;function build_extract_json_with_path.&lt;locals&gt;._builder&gt;, &#39;JSON_FORMAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>&#39;&gt;&gt;, &#39;J_S_O_N_OBJECT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>&#39;&gt;&gt;, &#39;J_S_O_N_OBJECT_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>&#39;&gt;&gt;, &#39;J_S_O_N_TABLE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>&#39;&gt;&gt;, &#39;J_S_O_N_VALUE_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONValueArray">sqlglot.expressions.JSONValueArray</a>&#39;&gt;&gt;, &#39;LAG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>&#39;&gt;&gt;, &#39;LAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Last">sqlglot.expressions.Last</a>&#39;&gt;&gt;, &#39;LAST_DAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>&#39;&gt;&gt;, &#39;LAST_DAY_OF_MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>&#39;&gt;&gt;, &#39;LAST_VALUE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>&#39;&gt;&gt;, &#39;LEAD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>&#39;&gt;&gt;, &#39;LEAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Least">sqlglot.expressions.Least</a>&#39;&gt;&gt;, &#39;LEFT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Left">sqlglot.expressions.Left</a>&#39;&gt;&gt;, &#39;LENGTH&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;LEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;&gt;, &#39;CHAR_LENGTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;&gt;, &#39;CHARACTER_LENGTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;&gt;, &#39;LEVENSHTEIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>&#39;&gt;&gt;, &#39;LIST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#List">sqlglot.expressions.List</a>&#39;&gt;&gt;, &#39;LN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>&#39;&gt;&gt;, &#39;LOG&#39;: &lt;function build_logarithm&gt;, &#39;LOGICAL_AND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;BOOL_AND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;BOOLAND_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;LOGICAL_OR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;BOOL_OR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;BOOLOR_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;LOWER&#39;: &lt;function build_lower&gt;, &#39;LCASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>&#39;&gt;&gt;, &#39;LOWER_HEX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>&#39;&gt;&gt;, &#39;MD5&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>&#39;&gt;&gt;, &#39;MD5_DIGEST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>&#39;&gt;&gt;, &#39;MAKE_INTERVAL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MakeInterval">sqlglot.expressions.MakeInterval</a>&#39;&gt;&gt;, &#39;MAP&#39;: &lt;function build_var_map&gt;, &#39;MAP_FROM_ENTRIES&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>&#39;&gt;&gt;, &#39;MATCH_AGAINST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>&#39;&gt;&gt;, &#39;MAX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Max">sqlglot.expressions.Max</a>&#39;&gt;&gt;, &#39;MEDIAN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Median">sqlglot.expressions.Median</a>&#39;&gt;&gt;, &#39;MIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Min">sqlglot.expressions.Min</a>&#39;&gt;&gt;, &#39;MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Month">sqlglot.expressions.Month</a>&#39;&gt;&gt;, &#39;MONTHS_BETWEEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>&#39;&gt;&gt;, &#39;NEXT_VALUE_FOR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>&#39;&gt;&gt;, &#39;NORMALIZE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Normalize">sqlglot.expressions.Normalize</a>&#39;&gt;&gt;, &#39;NTH_VALUE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>&#39;&gt;&gt;, &#39;NULLIF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>&#39;&gt;&gt;, &#39;NUMBER_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>&#39;&gt;&gt;, &#39;NVL2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>&#39;&gt;&gt;, &#39;OBJECT_INSERT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ObjectInsert">sqlglot.expressions.ObjectInsert</a>&#39;&gt;&gt;, &#39;OPEN_J_S_O_N&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>&#39;&gt;&gt;, &#39;OR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Or">sqlglot.expressions.Or</a>&#39;&gt;&gt;, &#39;OVERLAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Overlay">sqlglot.expressions.Overlay</a>&#39;&gt;&gt;, &#39;PAD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Pad">sqlglot.expressions.Pad</a>&#39;&gt;&gt;, &#39;PARAMETERIZED_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>&#39;&gt;&gt;, &#39;PARSE_JSON&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>&#39;&gt;&gt;, &#39;JSON_PARSE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>&#39;&gt;&gt;, &#39;PERCENTILE_CONT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>&#39;&gt;&gt;, &#39;PERCENTILE_DISC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>&#39;&gt;&gt;, &#39;POSEXPLODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>&#39;&gt;&gt;, &#39;POSEXPLODE_OUTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>&#39;&gt;&gt;, &#39;POWER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>&#39;&gt;&gt;, &#39;POW&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>&#39;&gt;&gt;, &#39;PREDICT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>&#39;&gt;&gt;, &#39;QUANTILE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>&#39;&gt;&gt;, &#39;QUARTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>&#39;&gt;&gt;, &#39;RAND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>&#39;&gt;&gt;, &#39;RANDOM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>&#39;&gt;&gt;, &#39;RANDN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>&#39;&gt;&gt;, &#39;RANGE_N&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>&#39;&gt;&gt;, &#39;READ_CSV&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>&#39;&gt;&gt;, &#39;REDUCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>&#39;&gt;&gt;, &#39;REGEXP_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>&#39;&gt;&gt;, &#39;REGEXP_EXTRACT_ALL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpExtractAll">sqlglot.expressions.RegexpExtractAll</a>&#39;&gt;&gt;, &#39;REGEXP_I_LIKE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>&#39;&gt;&gt;, &#39;REGEXP_LIKE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>&#39;&gt;&gt;, &#39;REGEXP_REPLACE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>&#39;&gt;&gt;, &#39;REGEXP_SPLIT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>&#39;&gt;&gt;, &#39;REPEAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>&#39;&gt;&gt;, &#39;RIGHT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Right">sqlglot.expressions.Right</a>&#39;&gt;&gt;, &#39;ROUND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Round">sqlglot.expressions.Round</a>&#39;&gt;&gt;, &#39;ROW_NUMBER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>&#39;&gt;&gt;, &#39;SHA&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>&#39;&gt;&gt;, &#39;SHA1&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>&#39;&gt;&gt;, &#39;SHA2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>&#39;&gt;&gt;, &#39;SAFE_DIVIDE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>&#39;&gt;&gt;, &#39;SIGN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>&#39;&gt;&gt;, &#39;SIGNUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>&#39;&gt;&gt;, &#39;SORT_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>&#39;&gt;&gt;, &#39;SPLIT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Split">sqlglot.expressions.Split</a>&#39;&gt;&gt;, &#39;SPLIT_PART&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SplitPart">sqlglot.expressions.SplitPart</a>&#39;&gt;&gt;, &#39;SQRT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>&#39;&gt;&gt;, &#39;STANDARD_HASH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>&#39;&gt;&gt;, &#39;STAR_MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>&#39;&gt;&gt;, &#39;STARTS_WITH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>&#39;&gt;&gt;, &#39;STARTSWITH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>&#39;&gt;&gt;, &#39;STDDEV&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>&#39;&gt;&gt;, &#39;STDEV&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>&#39;&gt;&gt;, &#39;STDDEV_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>&#39;&gt;&gt;, &#39;STDDEV_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>&#39;&gt;&gt;, &#39;STR_POSITION&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;&gt;, &#39;STR_TO_DATE&#39;: &lt;function _build_str_to_date&gt;, &#39;STR_TO_MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>&#39;&gt;&gt;, &#39;STR_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>&#39;&gt;&gt;, &#39;STR_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>&#39;&gt;&gt;, &#39;STRING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#String">sqlglot.expressions.String</a>&#39;&gt;&gt;, &#39;STRING_TO_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>&#39;&gt;&gt;, &#39;SPLIT_BY_STRING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>&#39;&gt;&gt;, &#39;STRUCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>&#39;&gt;&gt;, &#39;STRUCT_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>&#39;&gt;&gt;, &#39;STUFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>&#39;&gt;&gt;, &#39;INSERT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>&#39;&gt;&gt;, &#39;SUBSTRING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>&#39;&gt;&gt;, &#39;SUBSTR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>&#39;&gt;&gt;, &#39;SUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>&#39;&gt;&gt;, &#39;TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Time">sqlglot.expressions.Time</a>&#39;&gt;&gt;, &#39;TIME_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>&#39;&gt;&gt;, &#39;TIME_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>&#39;&gt;&gt;, &#39;TIME_FROM_PARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>&#39;&gt;&gt;, &#39;TIMEFROMPARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>&#39;&gt;&gt;, &#39;TIME_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>&#39;&gt;&gt;, &#39;TIME_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>&#39;&gt;&gt;, &#39;TIME_TO_TIME_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TIME_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>&#39;&gt;&gt;, &#39;TIME_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>&#39;&gt;&gt;, &#39;TIMESTAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>&#39;&gt;&gt;, &#39;TIMESTAMP_ADD&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;TIMESTAMPDIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>&#39;&gt;&gt;, &#39;TIMESTAMP_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>&#39;&gt;&gt;, &#39;TIMESTAMP_FROM_PARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>&#39;&gt;&gt;, &#39;TIMESTAMPFROMPARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>&#39;&gt;&gt;, &#39;TIMESTAMP_SUB&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;TIMESTAMP_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>&#39;&gt;&gt;, &#39;TO_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>&#39;&gt;&gt;, &#39;TO_BASE64&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>&#39;&gt;&gt;, &#39;TO_CHAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>&#39;&gt;&gt;, &#39;TO_DAYS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>&#39;&gt;&gt;, &#39;TO_DOUBLE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToDouble">sqlglot.expressions.ToDouble</a>&#39;&gt;&gt;, &#39;TO_MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>&#39;&gt;&gt;, &#39;TO_NUMBER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>&#39;&gt;&gt;, &#39;TRIM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>&#39;&gt;&gt;, &#39;TRY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Try">sqlglot.expressions.Try</a>&#39;&gt;&gt;, &#39;TRY_CAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>&#39;&gt;&gt;, &#39;TS_OR_DI_TO_DI&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>&#39;&gt;&gt;, &#39;TS_OR_DS_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>&#39;&gt;&gt;, &#39;TS_OR_DS_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_DATE_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TS_OR_DS_TO_DATETIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsToDatetime">sqlglot.expressions.TsOrDsToDatetime</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_TIMESTAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>&#39;&gt;&gt;, &#39;UNHEX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>&#39;&gt;&gt;, &#39;UNICODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Unicode">sqlglot.expressions.Unicode</a>&#39;&gt;&gt;, &#39;UNIX_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>&#39;&gt;&gt;, &#39;UNIX_SECONDS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixSeconds">sqlglot.expressions.UnixSeconds</a>&#39;&gt;&gt;, &#39;UNIX_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>&#39;&gt;&gt;, &#39;UNIX_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>&#39;&gt;&gt;, &#39;UNIX_TO_TIME_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>&#39;&gt;&gt;, &#39;UNNEST&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;UPPER&#39;: &lt;function build_upper&gt;, &#39;UCASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>&#39;&gt;&gt;, &#39;UUID&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Uuid">sqlglot.expressions.Uuid</a>&#39;&gt;&gt;, &#39;GEN_RANDOM_UUID&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Uuid">sqlglot.expressions.Uuid</a>&#39;&gt;&gt;, &#39;GENERATE_UUID&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Uuid">sqlglot.expressions.Uuid</a>&#39;&gt;&gt;, &#39;UUID_STRING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Uuid">sqlglot.expressions.Uuid</a>&#39;&gt;&gt;, &#39;VAR_MAP&#39;: &lt;function build_var_map&gt;, &#39;VARIANCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VARIANCE_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VAR_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VARIANCE_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;&gt;, &#39;VAR_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;&gt;, &#39;WEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Week">sqlglot.expressions.Week</a>&#39;&gt;&gt;, &#39;WEEK_OF_YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>&#39;&gt;&gt;, &#39;WEEKOFYEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>&#39;&gt;&gt;, &#39;XMLELEMENT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#XMLElement">sqlglot.expressions.XMLElement</a>&#39;&gt;&gt;, &#39;X_M_L_TABLE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>&#39;&gt;&gt;, &#39;XOR&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Year">sqlglot.expressions.Year</a>&#39;&gt;&gt;, &#39;ARRAYAGG&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;GLOB&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;JSON_EXTRACT_PATH_TEXT&#39;: &lt;function build_extract_json_with_path.&lt;locals&gt;._builder&gt;, &#39;LIKE&#39;: &lt;function build_like&gt;, &#39;LOG2&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LOG10&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LPAD&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LEFTPAD&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LTRIM&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;MOD&#39;: &lt;function build_mod&gt;, &#39;RIGHTPAD&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;RPAD&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;RTRIM&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SCOPE_RESOLUTION&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;STRPOS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;&gt;, &#39;CHARINDEX&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;INSTR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;&gt;, &#39;LOCATE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TO_HEX&#39;: &lt;function build_hex&gt;, &#39;ANY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>&#39;&gt;&gt;, &#39;ARRAYSUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>&#39;&gt;&gt;, &#39;DATEADD&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;DATE_FORMAT&#39;: &lt;function _build_date_format&gt;, &#39;DATESUB&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;FORMATDATETIME&#39;: &lt;function _build_date_format&gt;, &#39;JSONEXTRACTSTRING&#39;: &lt;function build_json_extract_path.&lt;locals&gt;._builder&gt;, &#39;MATCH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>&#39;&gt;&gt;, &#39;RANDCANONICAL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>&#39;&gt;&gt;, &#39;TUPLE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>&#39;&gt;&gt;, &#39;TIMESTAMPSUB&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;TIMESTAMPADD&#39;: &lt;function build_date_delta.&lt;locals&gt;._builder&gt;, &#39;UNIQ&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;&gt;, &#39;SHA256&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;SHA512&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;EDITDISTANCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>&#39;&gt;&gt;, &#39;LEVENSHTEINDISTANCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>&#39;&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.FUNCTIONS"></a>
</div>
<div id="ClickHouse.Parser.AGG_FUNCTIONS" class="classattr">
<div class="attr variable">
<span class="name">AGG_FUNCTIONS</span> =
<input id="ClickHouse.Parser.AGG_FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.AGG_FUNCTIONS-view-value"></label><span class="default_value">{&#39;quantilesExactLow&#39;, &#39;contingency&#39;, &#39;quantilesExactWeighted&#39;, &#39;boundingRatio&#39;, &#39;quantileExactLow&#39;, &#39;exponentialTimeDecayedAvg&#39;, &#39;quantileDeterministic&#39;, &#39;maxIntersections&#39;, &#39;quantiles&#39;, &#39;sequenceMatch&#39;, &#39;deltaSumTimestamp&#39;, &#39;groupBitmapAnd&#39;, &#39;sum&#39;, &#39;quantilesTiming&#39;, &#39;topKWeighted&#39;, &#39;sumCount&#39;, &#39;sequenceCount&#39;, &#39;welchTTest&#39;, &#39;deltaSum&#39;, &#39;quantileExact&#39;, &#39;groupArray&#39;, &#39;groupBitmapOr&#39;, &#39;maxIntersectionsPosition&#39;, &#39;retention&#39;, &#39;kolmogorovSmirnovTest&#39;, &#39;windowFunnel&#39;, &#39;meanZTest&#39;, &#39;rankCorr&#39;, &#39;groupBitXor&#39;, &#39;corr&#39;, &#39;varPop&#39;, &#39;last_value&#39;, &#39;sumKahan&#39;, &#39;simpleLinearRegression&#39;, &#39;quantilesBFloat16Weighted&#39;, &#39;varSamp&#39;, &#39;groupArrayLast&#39;, &#39;sumMap&#39;, &#39;groupArrayInsertAt&#39;, &#39;maxMap&#39;, &#39;quantilesGK&#39;, &#39;quantilesTimingWeighted&#39;, &#39;groupUniqArray&#39;, &#39;max&#39;, &#39;exponentialMovingAverage&#39;, &#39;quantileExactHigh&#39;, &#39;largestTriangleThreeBuckets&#39;, &#39;cramersVBiasCorrected&#39;, &#39;quantilesExact&#39;, &#39;groupArraySample&#39;, &#39;stddevPop&#39;, &#39;quantileTiming&#39;, &#39;avgWeighted&#39;, &#39;quantileBFloat16&#39;, &#39;min&#39;, &#39;quantileGK&#39;, &#39;intervalLengthSum&#39;, &#39;quantileInterpolatedWeighted&#39;, &#39;quantileTDigestWeighted&#39;, &#39;groupArrayMovingSum&#39;, &#39;argMax&#39;, &#39;median&#39;, &#39;groupArrayMovingAvg&#39;, &#39;groupBitmapXor&#39;, &#39;uniqCombined64&#39;, &#39;quantilesDeterministic&#39;, &#39;cramersV&#39;, &#39;groupBitmap&#39;, &#39;sparkBar&#39;, &#39;topK&#39;, &#39;groupBitAnd&#39;, &#39;uniqExact&#39;, &#39;stddevSamp&#39;, &#39;first_value&#39;, &#39;sumWithOverflow&#39;, &#39;uniqUpTo&#39;, &#39;quantilesExactHigh&#39;, &#39;entropy&#39;, &#39;quantilesTDigest&#39;, &#39;quantileTimingWeighted&#39;, &#39;uniq&#39;, &#39;stochasticLogisticRegression&#39;, &#39;quantile&#39;, &#39;quantileBFloat16Weighted&#39;, &#39;kurtPop&#39;, &#39;covarSamp&#39;, &#39;anyLast&#39;, &#39;uniqTheta&#39;, &#39;covarPop&#39;, &#39;uniqCombined&#39;, &#39;quantilesTDigestWeighted&#39;, &#39;quantilesBFloat16&#39;, &#39;skewPop&#39;, &#39;minMap&#39;, &#39;uniqHLL12&#39;, &#39;argMin&#39;, &#39;histogram&#39;, &#39;anyHeavy&#39;, &#39;sequenceNextNode&#39;, &#39;theilsU&#39;, &#39;groupBitOr&#39;, &#39;mannWhitneyUTest&#39;, &#39;any&#39;, &#39;quantilesInterpolatedWeighted&#39;, &#39;stochasticLinearRegression&#39;, &#39;studentTTest&#39;, &#39;skewSamp&#39;, &#39;quantileExactWeighted&#39;, &#39;categoricalInformationValue&#39;, &#39;count&#39;, &#39;kurtSamp&#39;, &#39;quantileTDigest&#39;, &#39;avg&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.AGG_FUNCTIONS"></a>
</div>
<div id="ClickHouse.Parser.AGG_FUNCTIONS_SUFFIXES" class="classattr">
<div class="attr variable">
<span class="name">AGG_FUNCTIONS_SUFFIXES</span> =
<input id="ClickHouse.Parser.AGG_FUNCTIONS_SUFFIXES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.AGG_FUNCTIONS_SUFFIXES-view-value"></label><span class="default_value">[&#39;If&#39;, &#39;Array&#39;, &#39;ArrayIf&#39;, &#39;Map&#39;, &#39;SimpleState&#39;, &#39;State&#39;, &#39;Merge&#39;, &#39;MergeState&#39;, &#39;ForEach&#39;, &#39;Distinct&#39;, &#39;OrDefault&#39;, &#39;OrNull&#39;, &#39;Resample&#39;, &#39;ArgMin&#39;, &#39;ArgMax&#39;]</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.AGG_FUNCTIONS_SUFFIXES"></a>
</div>
<div id="ClickHouse.Parser.FUNC_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">FUNC_TOKENS</span> =
<input id="ClickHouse.Parser.FUNC_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.LIST: &#39;LIST&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &lt;TokenType.MULTIPOLYGON: &#39;MULTIPOLYGON&#39;&gt;, &lt;TokenType.SMALLDATETIME: &#39;SMALLDATETIME&#39;&gt;, &lt;TokenType.ILIKE: &#39;ILIKE&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.SEQUENCE: &#39;SEQUENCE&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.IDENTIFIER: &#39;IDENTIFIER&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.UNNEST: &#39;UNNEST&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.RING: &#39;RING&#39;&gt;, &lt;TokenType.TDIGEST: &#39;TDIGEST&#39;&gt;, &lt;TokenType.INSERT: &#39;INSERT&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.LIKE: &#39;LIKE&#39;&gt;, &lt;TokenType.POLYGON: &#39;POLYGON&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.DECIMAL256: &#39;DECIMAL256&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.LEFT: &#39;LEFT&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.PRIMARY_KEY: &#39;PRIMARY_KEY&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.BLOB: &#39;BLOB&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.CURRENT_SCHEMA: &#39;CURRENT_SCHEMA&#39;&gt;, &lt;TokenType.NAME: &#39;NAME&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.RLIKE: &#39;RLIKE&#39;&gt;, &lt;TokenType.DATETIME2: &#39;DATETIME2&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.AND: &#39;AND&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.VECTOR: &#39;VECTOR&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.RIGHT: &#39;RIGHT&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.OR: &#39;OR&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;, &lt;TokenType.UNION: &#39;UNION&#39;&gt;, &lt;TokenType.DECIMAL64: &#39;DECIMAL64&#39;&gt;, &lt;TokenType.TRUNCATE: &#39;TRUNCATE&#39;&gt;, &lt;TokenType.MULTILINESTRING: &#39;MULTILINESTRING&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.GLOB: &#39;GLOB&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.OFFSET: &#39;OFFSET&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.WINDOW: &#39;WINDOW&#39;&gt;, &lt;TokenType.XOR: &#39;XOR&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.DECIMAL128: &#39;DECIMAL128&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.POINT: &#39;POINT&#39;&gt;, &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.LINESTRING: &#39;LINESTRING&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.DYNAMIC: &#39;DYNAMIC&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.UDOUBLE: &#39;UDOUBLE&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.DECIMAL32: &#39;DECIMAL32&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.FUNC_TOKENS"></a>
</div>
<div id="ClickHouse.Parser.RESERVED_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">RESERVED_TOKENS</span> =
<input id="ClickHouse.Parser.RESERVED_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.RESERVED_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.GT: &#39;GT&#39;&gt;, &lt;TokenType.CARET: &#39;CARET&#39;&gt;, &lt;TokenType.COMMA: &#39;COMMA&#39;&gt;, &lt;TokenType.LT: &#39;LT&#39;&gt;, &lt;TokenType.L_BRACE: &#39;L_BRACE&#39;&gt;, &lt;TokenType.SLASH: &#39;SLASH&#39;&gt;, &lt;TokenType.SEMICOLON: &#39;SEMICOLON&#39;&gt;, &lt;TokenType.R_BRACKET: &#39;R_BRACKET&#39;&gt;, &lt;TokenType.DOT: &#39;DOT&#39;&gt;, &lt;TokenType.HASH: &#39;HASH&#39;&gt;, &lt;TokenType.BACKSLASH: &#39;BACKSLASH&#39;&gt;, &lt;TokenType.PARAMETER: &#39;PARAMETER&#39;&gt;, &lt;TokenType.MOD: &#39;MOD&#39;&gt;, &lt;TokenType.L_BRACKET: &#39;L_BRACKET&#39;&gt;, &lt;TokenType.R_BRACE: &#39;R_BRACE&#39;&gt;, &lt;TokenType.COLON: &#39;COLON&#39;&gt;, &lt;TokenType.PLUS: &#39;PLUS&#39;&gt;, &lt;TokenType.NOT: &#39;NOT&#39;&gt;, &lt;TokenType.PLACEHOLDER: &#39;PLACEHOLDER&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.L_PAREN: &#39;L_PAREN&#39;&gt;, &lt;TokenType.R_PAREN: &#39;R_PAREN&#39;&gt;, &lt;TokenType.STAR: &#39;STAR&#39;&gt;, &lt;TokenType.DASH: &#39;DASH&#39;&gt;, &lt;TokenType.AMP: &#39;AMP&#39;&gt;, &lt;TokenType.TILDA: &#39;TILDA&#39;&gt;, &lt;TokenType.EQ: &#39;EQ&#39;&gt;, &lt;TokenType.PIPE: &#39;PIPE&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.RESERVED_TOKENS"></a>
</div>
<div id="ClickHouse.Parser.ID_VAR_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">ID_VAR_TOKENS</span> =
<input id="ClickHouse.Parser.ID_VAR_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.ID_VAR_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &lt;TokenType.LIST: &#39;LIST&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.FILE_FORMAT: &#39;FILE_FORMAT&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &lt;TokenType.MULTIPOLYGON: &#39;MULTIPOLYGON&#39;&gt;, &lt;TokenType.SMALLDATETIME: &#39;SMALLDATETIME&#39;&gt;, &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &lt;TokenType.FINAL: &#39;FINAL&#39;&gt;, &lt;TokenType.MODEL: &#39;MODEL&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.SEQUENCE: &#39;SEQUENCE&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.STRAIGHT_JOIN: &#39;STRAIGHT_JOIN&#39;&gt;, &lt;TokenType.IDENTIFIER: &#39;IDENTIFIER&#39;&gt;, &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &lt;TokenType.ANTI: &#39;ANTI&#39;&gt;, &lt;TokenType.SINK: &#39;SINK&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.UNNEST: &#39;UNNEST&#39;&gt;, &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &lt;TokenType.EXPORT: &#39;EXPORT&#39;&gt;, &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &lt;TokenType.RING: &#39;RING&#39;&gt;, &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &lt;TokenType.TDIGEST: &#39;TDIGEST&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.REFRESH: &#39;REFRESH&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.ASOF: &#39;ASOF&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.POLYGON: &#39;POLYGON&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.LIKE: &#39;LIKE&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.USE: &#39;USE&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.ROLLUP: &#39;ROLLUP&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.DECIMAL256: &#39;DECIMAL256&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.LEFT: &#39;LEFT&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.DETACH: &#39;DETACH&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.NATURAL: &#39;NATURAL&#39;&gt;, &lt;TokenType.SEMI: &#39;SEMI&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.BLOB: &#39;BLOB&#39;&gt;, &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.CURRENT_SCHEMA: &#39;CURRENT_SCHEMA&#39;&gt;, &lt;TokenType.NAME: &#39;NAME&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.SOURCE: &#39;SOURCE&#39;&gt;, &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &lt;TokenType.STREAMLIT: &#39;STREAMLIT&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.APPLY: &#39;APPLY&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.PUT: &#39;PUT&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.WAREHOUSE: &#39;WAREHOUSE&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;, &lt;TokenType.DATETIME2: &#39;DATETIME2&#39;&gt;, &lt;TokenType.NAMESPACE: &#39;NAMESPACE&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &lt;TokenType.RENAME: &#39;RENAME&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.VECTOR: &#39;VECTOR&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.RIGHT: &#39;RIGHT&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;, &lt;TokenType.DECIMAL64: &#39;DECIMAL64&#39;&gt;, &lt;TokenType.MULTILINESTRING: &#39;MULTILINESTRING&#39;&gt;, &lt;TokenType.TRUNCATE: &#39;TRUNCATE&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.OPERATOR: &#39;OPERATOR&#39;&gt;, &lt;TokenType.OFFSET: &#39;OFFSET&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &lt;TokenType.FULL: &#39;FULL&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.WINDOW: &#39;WINDOW&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.COPY: &#39;COPY&#39;&gt;, &lt;TokenType.STAGE: &#39;STAGE&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.DECIMAL128: &#39;DECIMAL128&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.TAG: &#39;TAG&#39;&gt;, &lt;TokenType.LIMIT: &#39;LIMIT&#39;&gt;, &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &lt;TokenType.POINT: &#39;POINT&#39;&gt;, &lt;TokenType.END: &#39;END&#39;&gt;, &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;, &lt;TokenType.LINESTRING: &#39;LINESTRING&#39;&gt;, &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.CUBE: &#39;CUBE&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.ATTACH: &#39;ATTACH&#39;&gt;, &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &lt;TokenType.DYNAMIC: &#39;DYNAMIC&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.TOP: &#39;TOP&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.UDOUBLE: &#39;UDOUBLE&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.DECIMAL32: &#39;DECIMAL32&#39;&gt;, &lt;TokenType.STORAGE_INTEGRATION: &#39;STORAGE_INTEGRATION&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.ID_VAR_TOKENS"></a>
</div>
<div id="ClickHouse.Parser.AGG_FUNC_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">AGG_FUNC_MAPPING</span> =
<input id="ClickHouse.Parser.AGG_FUNC_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.AGG_FUNC_MAPPING-view-value"></label><span class="default_value">{&#39;quantilesExactLowIf&#39;: (&#39;quantilesExactLow&#39;, &#39;If&#39;), &#39;contingencyIf&#39;: (&#39;contingency&#39;, &#39;If&#39;), &#39;quantilesExactWeightedIf&#39;: (&#39;quantilesExactWeighted&#39;, &#39;If&#39;), &#39;boundingRatioIf&#39;: (&#39;boundingRatio&#39;, &#39;If&#39;), &#39;quantileExactLowIf&#39;: (&#39;quantileExactLow&#39;, &#39;If&#39;), &#39;exponentialTimeDecayedAvgIf&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;If&#39;), &#39;quantileDeterministicIf&#39;: (&#39;quantileDeterministic&#39;, &#39;If&#39;), &#39;maxIntersectionsIf&#39;: (&#39;maxIntersections&#39;, &#39;If&#39;), &#39;quantilesIf&#39;: (&#39;quantiles&#39;, &#39;If&#39;), &#39;sequenceMatchIf&#39;: (&#39;sequenceMatch&#39;, &#39;If&#39;), &#39;deltaSumTimestampIf&#39;: (&#39;deltaSumTimestamp&#39;, &#39;If&#39;), &#39;groupBitmapAndIf&#39;: (&#39;groupBitmapAnd&#39;, &#39;If&#39;), &#39;sumIf&#39;: (&#39;sum&#39;, &#39;If&#39;), &#39;quantilesTimingIf&#39;: (&#39;quantilesTiming&#39;, &#39;If&#39;), &#39;topKWeightedIf&#39;: (&#39;topKWeighted&#39;, &#39;If&#39;), &#39;sumCountIf&#39;: (&#39;sumCount&#39;, &#39;If&#39;), &#39;sequenceCountIf&#39;: (&#39;sequenceCount&#39;, &#39;If&#39;), &#39;welchTTestIf&#39;: (&#39;welchTTest&#39;, &#39;If&#39;), &#39;deltaSumIf&#39;: (&#39;deltaSum&#39;, &#39;If&#39;), &#39;quantileExactIf&#39;: (&#39;quantileExact&#39;, &#39;If&#39;), &#39;groupArrayIf&#39;: (&#39;groupArray&#39;, &#39;If&#39;), &#39;groupBitmapOrIf&#39;: (&#39;groupBitmapOr&#39;, &#39;If&#39;), &#39;maxIntersectionsPositionIf&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;If&#39;), &#39;retentionIf&#39;: (&#39;retention&#39;, &#39;If&#39;), &#39;kolmogorovSmirnovTestIf&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;If&#39;), &#39;windowFunnelIf&#39;: (&#39;windowFunnel&#39;, &#39;If&#39;), &#39;meanZTestIf&#39;: (&#39;meanZTest&#39;, &#39;If&#39;), &#39;rankCorrIf&#39;: (&#39;rankCorr&#39;, &#39;If&#39;), &#39;groupBitXorIf&#39;: (&#39;groupBitXor&#39;, &#39;If&#39;), &#39;corrIf&#39;: (&#39;corr&#39;, &#39;If&#39;), &#39;varPopIf&#39;: (&#39;varPop&#39;, &#39;If&#39;), &#39;last_valueIf&#39;: (&#39;last_value&#39;, &#39;If&#39;), &#39;sumKahanIf&#39;: (&#39;sumKahan&#39;, &#39;If&#39;), &#39;simpleLinearRegressionIf&#39;: (&#39;simpleLinearRegression&#39;, &#39;If&#39;), &#39;quantilesBFloat16WeightedIf&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;If&#39;), &#39;varSampIf&#39;: (&#39;varSamp&#39;, &#39;If&#39;), &#39;groupArrayLastIf&#39;: (&#39;groupArrayLast&#39;, &#39;If&#39;), &#39;sumMapIf&#39;: (&#39;sumMap&#39;, &#39;If&#39;), &#39;groupArrayInsertAtIf&#39;: (&#39;groupArrayInsertAt&#39;, &#39;If&#39;), &#39;maxMapIf&#39;: (&#39;maxMap&#39;, &#39;If&#39;), &#39;quantilesGKIf&#39;: (&#39;quantilesGK&#39;, &#39;If&#39;), &#39;quantilesTimingWeightedIf&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;If&#39;), &#39;groupUniqArrayIf&#39;: (&#39;groupUniqArray&#39;, &#39;If&#39;), &#39;maxIf&#39;: (&#39;max&#39;, &#39;If&#39;), &#39;exponentialMovingAverageIf&#39;: (&#39;exponentialMovingAverage&#39;, &#39;If&#39;), &#39;quantileExactHighIf&#39;: (&#39;quantileExactHigh&#39;, &#39;If&#39;), &#39;largestTriangleThreeBucketsIf&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;If&#39;), &#39;cramersVBiasCorrectedIf&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;If&#39;), &#39;quantilesExactIf&#39;: (&#39;quantilesExact&#39;, &#39;If&#39;), &#39;groupArraySampleIf&#39;: (&#39;groupArraySample&#39;, &#39;If&#39;), &#39;stddevPopIf&#39;: (&#39;stddevPop&#39;, &#39;If&#39;), &#39;quantileTimingIf&#39;: (&#39;quantileTiming&#39;, &#39;If&#39;), &#39;avgWeightedIf&#39;: (&#39;avgWeighted&#39;, &#39;If&#39;), &#39;quantileBFloat16If&#39;: (&#39;quantileBFloat16&#39;, &#39;If&#39;), &#39;minIf&#39;: (&#39;min&#39;, &#39;If&#39;), &#39;quantileGKIf&#39;: (&#39;quantileGK&#39;, &#39;If&#39;), &#39;intervalLengthSumIf&#39;: (&#39;intervalLengthSum&#39;, &#39;If&#39;), &#39;quantileInterpolatedWeightedIf&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;If&#39;), &#39;quantileTDigestWeightedIf&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;If&#39;), &#39;groupArrayMovingSumIf&#39;: (&#39;groupArrayMovingSum&#39;, &#39;If&#39;), &#39;argMaxIf&#39;: (&#39;argMax&#39;, &#39;If&#39;), &#39;medianIf&#39;: (&#39;median&#39;, &#39;If&#39;), &#39;groupArrayMovingAvgIf&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;If&#39;), &#39;groupBitmapXorIf&#39;: (&#39;groupBitmapXor&#39;, &#39;If&#39;), &#39;uniqCombined64If&#39;: (&#39;uniqCombined64&#39;, &#39;If&#39;), &#39;quantilesDeterministicIf&#39;: (&#39;quantilesDeterministic&#39;, &#39;If&#39;), &#39;cramersVIf&#39;: (&#39;cramersV&#39;, &#39;If&#39;), &#39;groupBitmapIf&#39;: (&#39;groupBitmap&#39;, &#39;If&#39;), &#39;sparkBarIf&#39;: (&#39;sparkBar&#39;, &#39;If&#39;), &#39;topKIf&#39;: (&#39;topK&#39;, &#39;If&#39;), &#39;groupBitAndIf&#39;: (&#39;groupBitAnd&#39;, &#39;If&#39;), &#39;uniqExactIf&#39;: (&#39;uniqExact&#39;, &#39;If&#39;), &#39;stddevSampIf&#39;: (&#39;stddevSamp&#39;, &#39;If&#39;), &#39;first_valueIf&#39;: (&#39;first_value&#39;, &#39;If&#39;), &#39;sumWithOverflowIf&#39;: (&#39;sumWithOverflow&#39;, &#39;If&#39;), &#39;uniqUpToIf&#39;: (&#39;uniqUpTo&#39;, &#39;If&#39;), &#39;quantilesExactHighIf&#39;: (&#39;quantilesExactHigh&#39;, &#39;If&#39;), &#39;entropyIf&#39;: (&#39;entropy&#39;, &#39;If&#39;), &#39;quantilesTDigestIf&#39;: (&#39;quantilesTDigest&#39;, &#39;If&#39;), &#39;quantileTimingWeightedIf&#39;: (&#39;quantileTimingWeighted&#39;, &#39;If&#39;), &#39;uniqIf&#39;: (&#39;uniq&#39;, &#39;If&#39;), &#39;stochasticLogisticRegressionIf&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;If&#39;), &#39;quantileIf&#39;: (&#39;quantile&#39;, &#39;If&#39;), &#39;quantileBFloat16WeightedIf&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;If&#39;), &#39;kurtPopIf&#39;: (&#39;kurtPop&#39;, &#39;If&#39;), &#39;covarSampIf&#39;: (&#39;covarSamp&#39;, &#39;If&#39;), &#39;anyLastIf&#39;: (&#39;anyLast&#39;, &#39;If&#39;), &#39;uniqThetaIf&#39;: (&#39;uniqTheta&#39;, &#39;If&#39;), &#39;covarPopIf&#39;: (&#39;covarPop&#39;, &#39;If&#39;), &#39;uniqCombinedIf&#39;: (&#39;uniqCombined&#39;, &#39;If&#39;), &#39;quantilesTDigestWeightedIf&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;If&#39;), &#39;quantilesBFloat16If&#39;: (&#39;quantilesBFloat16&#39;, &#39;If&#39;), &#39;skewPopIf&#39;: (&#39;skewPop&#39;, &#39;If&#39;), &#39;minMapIf&#39;: (&#39;minMap&#39;, &#39;If&#39;), &#39;uniqHLL12If&#39;: (&#39;uniqHLL12&#39;, &#39;If&#39;), &#39;argMinIf&#39;: (&#39;argMin&#39;, &#39;If&#39;), &#39;histogramIf&#39;: (&#39;histogram&#39;, &#39;If&#39;), &#39;anyHeavyIf&#39;: (&#39;anyHeavy&#39;, &#39;If&#39;), &#39;sequenceNextNodeIf&#39;: (&#39;sequenceNextNode&#39;, &#39;If&#39;), &#39;theilsUIf&#39;: (&#39;theilsU&#39;, &#39;If&#39;), &#39;groupBitOrIf&#39;: (&#39;groupBitOr&#39;, &#39;If&#39;), &#39;mannWhitneyUTestIf&#39;: (&#39;mannWhitneyUTest&#39;, &#39;If&#39;), &#39;anyIf&#39;: (&#39;any&#39;, &#39;If&#39;), &#39;quantilesInterpolatedWeightedIf&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;If&#39;), &#39;stochasticLinearRegressionIf&#39;: (&#39;stochasticLinearRegression&#39;, &#39;If&#39;), &#39;studentTTestIf&#39;: (&#39;studentTTest&#39;, &#39;If&#39;), &#39;skewSampIf&#39;: (&#39;skewSamp&#39;, &#39;If&#39;), &#39;quantileExactWeightedIf&#39;: (&#39;quantileExactWeighted&#39;, &#39;If&#39;), &#39;categoricalInformationValueIf&#39;: (&#39;categoricalInformationValue&#39;, &#39;If&#39;), &#39;countIf&#39;: (&#39;count&#39;, &#39;If&#39;), &#39;kurtSampIf&#39;: (&#39;kurtSamp&#39;, &#39;If&#39;), &#39;quantileTDigestIf&#39;: (&#39;quantileTDigest&#39;, &#39;If&#39;), &#39;avgIf&#39;: (&#39;avg&#39;, &#39;If&#39;), &#39;quantilesExactLowArray&#39;: (&#39;quantilesExactLow&#39;, &#39;Array&#39;), &#39;contingencyArray&#39;: (&#39;contingency&#39;, &#39;Array&#39;), &#39;quantilesExactWeightedArray&#39;: (&#39;quantilesExactWeighted&#39;, &#39;Array&#39;), &#39;boundingRatioArray&#39;: (&#39;boundingRatio&#39;, &#39;Array&#39;), &#39;quantileExactLowArray&#39;: (&#39;quantileExactLow&#39;, &#39;Array&#39;), &#39;exponentialTimeDecayedAvgArray&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;Array&#39;), &#39;quantileDeterministicArray&#39;: (&#39;quantileDeterministic&#39;, &#39;Array&#39;), &#39;maxIntersectionsArray&#39;: (&#39;maxIntersections&#39;, &#39;Array&#39;), &#39;quantilesArray&#39;: (&#39;quantiles&#39;, &#39;Array&#39;), &#39;sequenceMatchArray&#39;: (&#39;sequenceMatch&#39;, &#39;Array&#39;), &#39;deltaSumTimestampArray&#39;: (&#39;deltaSumTimestamp&#39;, &#39;Array&#39;), &#39;groupBitmapAndArray&#39;: (&#39;groupBitmapAnd&#39;, &#39;Array&#39;), &#39;sumArray&#39;: (&#39;sum&#39;, &#39;Array&#39;), &#39;quantilesTimingArray&#39;: (&#39;quantilesTiming&#39;, &#39;Array&#39;), &#39;topKWeightedArray&#39;: (&#39;topKWeighted&#39;, &#39;Array&#39;), &#39;sumCountArray&#39;: (&#39;sumCount&#39;, &#39;Array&#39;), &#39;sequenceCountArray&#39;: (&#39;sequenceCount&#39;, &#39;Array&#39;), &#39;welchTTestArray&#39;: (&#39;welchTTest&#39;, &#39;Array&#39;), &#39;deltaSumArray&#39;: (&#39;deltaSum&#39;, &#39;Array&#39;), &#39;quantileExactArray&#39;: (&#39;quantileExact&#39;, &#39;Array&#39;), &#39;groupArrayArray&#39;: (&#39;groupArray&#39;, &#39;Array&#39;), &#39;groupBitmapOrArray&#39;: (&#39;groupBitmapOr&#39;, &#39;Array&#39;), &#39;maxIntersectionsPositionArray&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;Array&#39;), &#39;retentionArray&#39;: (&#39;retention&#39;, &#39;Array&#39;), &#39;kolmogorovSmirnovTestArray&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;Array&#39;), &#39;windowFunnelArray&#39;: (&#39;windowFunnel&#39;, &#39;Array&#39;), &#39;meanZTestArray&#39;: (&#39;meanZTest&#39;, &#39;Array&#39;), &#39;rankCorrArray&#39;: (&#39;rankCorr&#39;, &#39;Array&#39;), &#39;groupBitXorArray&#39;: (&#39;groupBitXor&#39;, &#39;Array&#39;), &#39;corrArray&#39;: (&#39;corr&#39;, &#39;Array&#39;), &#39;varPopArray&#39;: (&#39;varPop&#39;, &#39;Array&#39;), &#39;last_valueArray&#39;: (&#39;last_value&#39;, &#39;Array&#39;), &#39;sumKahanArray&#39;: (&#39;sumKahan&#39;, &#39;Array&#39;), &#39;simpleLinearRegressionArray&#39;: (&#39;simpleLinearRegression&#39;, &#39;Array&#39;), &#39;quantilesBFloat16WeightedArray&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;Array&#39;), &#39;varSampArray&#39;: (&#39;varSamp&#39;, &#39;Array&#39;), &#39;groupArrayLastArray&#39;: (&#39;groupArrayLast&#39;, &#39;Array&#39;), &#39;sumMapArray&#39;: (&#39;sumMap&#39;, &#39;Array&#39;), &#39;groupArrayInsertAtArray&#39;: (&#39;groupArrayInsertAt&#39;, &#39;Array&#39;), &#39;maxMapArray&#39;: (&#39;maxMap&#39;, &#39;Array&#39;), &#39;quantilesGKArray&#39;: (&#39;quantilesGK&#39;, &#39;Array&#39;), &#39;quantilesTimingWeightedArray&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;Array&#39;), &#39;groupUniqArrayArray&#39;: (&#39;groupUniqArray&#39;, &#39;Array&#39;), &#39;maxArray&#39;: (&#39;max&#39;, &#39;Array&#39;), &#39;exponentialMovingAverageArray&#39;: (&#39;exponentialMovingAverage&#39;, &#39;Array&#39;), &#39;quantileExactHighArray&#39;: (&#39;quantileExactHigh&#39;, &#39;Array&#39;), &#39;largestTriangleThreeBucketsArray&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;Array&#39;), &#39;cramersVBiasCorrectedArray&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;Array&#39;), &#39;quantilesExactArray&#39;: (&#39;quantilesExact&#39;, &#39;Array&#39;), &#39;groupArraySampleArray&#39;: (&#39;groupArraySample&#39;, &#39;Array&#39;), &#39;stddevPopArray&#39;: (&#39;stddevPop&#39;, &#39;Array&#39;), &#39;quantileTimingArray&#39;: (&#39;quantileTiming&#39;, &#39;Array&#39;), &#39;avgWeightedArray&#39;: (&#39;avgWeighted&#39;, &#39;Array&#39;), &#39;quantileBFloat16Array&#39;: (&#39;quantileBFloat16&#39;, &#39;Array&#39;), &#39;minArray&#39;: (&#39;min&#39;, &#39;Array&#39;), &#39;quantileGKArray&#39;: (&#39;quantileGK&#39;, &#39;Array&#39;), &#39;intervalLengthSumArray&#39;: (&#39;intervalLengthSum&#39;, &#39;Array&#39;), &#39;quantileInterpolatedWeightedArray&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;Array&#39;), &#39;quantileTDigestWeightedArray&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;Array&#39;), &#39;groupArrayMovingSumArray&#39;: (&#39;groupArrayMovingSum&#39;, &#39;Array&#39;), &#39;argMaxArray&#39;: (&#39;argMax&#39;, &#39;Array&#39;), &#39;medianArray&#39;: (&#39;median&#39;, &#39;Array&#39;), &#39;groupArrayMovingAvgArray&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;Array&#39;), &#39;groupBitmapXorArray&#39;: (&#39;groupBitmapXor&#39;, &#39;Array&#39;), &#39;uniqCombined64Array&#39;: (&#39;uniqCombined64&#39;, &#39;Array&#39;), &#39;quantilesDeterministicArray&#39;: (&#39;quantilesDeterministic&#39;, &#39;Array&#39;), &#39;cramersVArray&#39;: (&#39;cramersV&#39;, &#39;Array&#39;), &#39;groupBitmapArray&#39;: (&#39;groupBitmap&#39;, &#39;Array&#39;), &#39;sparkBarArray&#39;: (&#39;sparkBar&#39;, &#39;Array&#39;), &#39;topKArray&#39;: (&#39;topK&#39;, &#39;Array&#39;), &#39;groupBitAndArray&#39;: (&#39;groupBitAnd&#39;, &#39;Array&#39;), &#39;uniqExactArray&#39;: (&#39;uniqExact&#39;, &#39;Array&#39;), &#39;stddevSampArray&#39;: (&#39;stddevSamp&#39;, &#39;Array&#39;), &#39;first_valueArray&#39;: (&#39;first_value&#39;, &#39;Array&#39;), &#39;sumWithOverflowArray&#39;: (&#39;sumWithOverflow&#39;, &#39;Array&#39;), &#39;uniqUpToArray&#39;: (&#39;uniqUpTo&#39;, &#39;Array&#39;), &#39;quantilesExactHighArray&#39;: (&#39;quantilesExactHigh&#39;, &#39;Array&#39;), &#39;entropyArray&#39;: (&#39;entropy&#39;, &#39;Array&#39;), &#39;quantilesTDigestArray&#39;: (&#39;quantilesTDigest&#39;, &#39;Array&#39;), &#39;quantileTimingWeightedArray&#39;: (&#39;quantileTimingWeighted&#39;, &#39;Array&#39;), &#39;uniqArray&#39;: (&#39;uniq&#39;, &#39;Array&#39;), &#39;stochasticLogisticRegressionArray&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;Array&#39;), &#39;quantileArray&#39;: (&#39;quantile&#39;, &#39;Array&#39;), &#39;quantileBFloat16WeightedArray&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;Array&#39;), &#39;kurtPopArray&#39;: (&#39;kurtPop&#39;, &#39;Array&#39;), &#39;covarSampArray&#39;: (&#39;covarSamp&#39;, &#39;Array&#39;), &#39;anyLastArray&#39;: (&#39;anyLast&#39;, &#39;Array&#39;), &#39;uniqThetaArray&#39;: (&#39;uniqTheta&#39;, &#39;Array&#39;), &#39;covarPopArray&#39;: (&#39;covarPop&#39;, &#39;Array&#39;), &#39;uniqCombinedArray&#39;: (&#39;uniqCombined&#39;, &#39;Array&#39;), &#39;quantilesTDigestWeightedArray&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;Array&#39;), &#39;quantilesBFloat16Array&#39;: (&#39;quantilesBFloat16&#39;, &#39;Array&#39;), &#39;skewPopArray&#39;: (&#39;skewPop&#39;, &#39;Array&#39;), &#39;minMapArray&#39;: (&#39;minMap&#39;, &#39;Array&#39;), &#39;uniqHLL12Array&#39;: (&#39;uniqHLL12&#39;, &#39;Array&#39;), &#39;argMinArray&#39;: (&#39;argMin&#39;, &#39;Array&#39;), &#39;histogramArray&#39;: (&#39;histogram&#39;, &#39;Array&#39;), &#39;anyHeavyArray&#39;: (&#39;anyHeavy&#39;, &#39;Array&#39;), &#39;sequenceNextNodeArray&#39;: (&#39;sequenceNextNode&#39;, &#39;Array&#39;), &#39;theilsUArray&#39;: (&#39;theilsU&#39;, &#39;Array&#39;), &#39;groupBitOrArray&#39;: (&#39;groupBitOr&#39;, &#39;Array&#39;), &#39;mannWhitneyUTestArray&#39;: (&#39;mannWhitneyUTest&#39;, &#39;Array&#39;), &#39;anyArray&#39;: (&#39;any&#39;, &#39;Array&#39;), &#39;quantilesInterpolatedWeightedArray&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;Array&#39;), &#39;stochasticLinearRegressionArray&#39;: (&#39;stochasticLinearRegression&#39;, &#39;Array&#39;), &#39;studentTTestArray&#39;: (&#39;studentTTest&#39;, &#39;Array&#39;), &#39;skewSampArray&#39;: (&#39;skewSamp&#39;, &#39;Array&#39;), &#39;quantileExactWeightedArray&#39;: (&#39;quantileExactWeighted&#39;, &#39;Array&#39;), &#39;categoricalInformationValueArray&#39;: (&#39;categoricalInformationValue&#39;, &#39;Array&#39;), &#39;countArray&#39;: (&#39;count&#39;, &#39;Array&#39;), &#39;kurtSampArray&#39;: (&#39;kurtSamp&#39;, &#39;Array&#39;), &#39;quantileTDigestArray&#39;: (&#39;quantileTDigest&#39;, &#39;Array&#39;), &#39;avgArray&#39;: (&#39;avg&#39;, &#39;Array&#39;), &#39;quantilesExactLowArrayIf&#39;: (&#39;quantilesExactLow&#39;, &#39;ArrayIf&#39;), &#39;contingencyArrayIf&#39;: (&#39;contingency&#39;, &#39;ArrayIf&#39;), &#39;quantilesExactWeightedArrayIf&#39;: (&#39;quantilesExactWeighted&#39;, &#39;ArrayIf&#39;), &#39;boundingRatioArrayIf&#39;: (&#39;boundingRatio&#39;, &#39;ArrayIf&#39;), &#39;quantileExactLowArrayIf&#39;: (&#39;quantileExactLow&#39;, &#39;ArrayIf&#39;), &#39;exponentialTimeDecayedAvgArrayIf&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;ArrayIf&#39;), &#39;quantileDeterministicArrayIf&#39;: (&#39;quantileDeterministic&#39;, &#39;ArrayIf&#39;), &#39;maxIntersectionsArrayIf&#39;: (&#39;maxIntersections&#39;, &#39;ArrayIf&#39;), &#39;quantilesArrayIf&#39;: (&#39;quantiles&#39;, &#39;ArrayIf&#39;), &#39;sequenceMatchArrayIf&#39;: (&#39;sequenceMatch&#39;, &#39;ArrayIf&#39;), &#39;deltaSumTimestampArrayIf&#39;: (&#39;deltaSumTimestamp&#39;, &#39;ArrayIf&#39;), &#39;groupBitmapAndArrayIf&#39;: (&#39;groupBitmapAnd&#39;, &#39;ArrayIf&#39;), &#39;sumArrayIf&#39;: (&#39;sum&#39;, &#39;ArrayIf&#39;), &#39;quantilesTimingArrayIf&#39;: (&#39;quantilesTiming&#39;, &#39;ArrayIf&#39;), &#39;topKWeightedArrayIf&#39;: (&#39;topKWeighted&#39;, &#39;ArrayIf&#39;), &#39;sumCountArrayIf&#39;: (&#39;sumCount&#39;, &#39;ArrayIf&#39;), &#39;sequenceCountArrayIf&#39;: (&#39;sequenceCount&#39;, &#39;ArrayIf&#39;), &#39;welchTTestArrayIf&#39;: (&#39;welchTTest&#39;, &#39;ArrayIf&#39;), &#39;deltaSumArrayIf&#39;: (&#39;deltaSum&#39;, &#39;ArrayIf&#39;), &#39;quantileExactArrayIf&#39;: (&#39;quantileExact&#39;, &#39;ArrayIf&#39;), &#39;groupArrayArrayIf&#39;: (&#39;groupArray&#39;, &#39;ArrayIf&#39;), &#39;groupBitmapOrArrayIf&#39;: (&#39;groupBitmapOr&#39;, &#39;ArrayIf&#39;), &#39;maxIntersectionsPositionArrayIf&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;ArrayIf&#39;), &#39;retentionArrayIf&#39;: (&#39;retention&#39;, &#39;ArrayIf&#39;), &#39;kolmogorovSmirnovTestArrayIf&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;ArrayIf&#39;), &#39;windowFunnelArrayIf&#39;: (&#39;windowFunnel&#39;, &#39;ArrayIf&#39;), &#39;meanZTestArrayIf&#39;: (&#39;meanZTest&#39;, &#39;ArrayIf&#39;), &#39;rankCorrArrayIf&#39;: (&#39;rankCorr&#39;, &#39;ArrayIf&#39;), &#39;groupBitXorArrayIf&#39;: (&#39;groupBitXor&#39;, &#39;ArrayIf&#39;), &#39;corrArrayIf&#39;: (&#39;corr&#39;, &#39;ArrayIf&#39;), &#39;varPopArrayIf&#39;: (&#39;varPop&#39;, &#39;ArrayIf&#39;), &#39;last_valueArrayIf&#39;: (&#39;last_value&#39;, &#39;ArrayIf&#39;), &#39;sumKahanArrayIf&#39;: (&#39;sumKahan&#39;, &#39;ArrayIf&#39;), &#39;simpleLinearRegressionArrayIf&#39;: (&#39;simpleLinearRegression&#39;, &#39;ArrayIf&#39;), &#39;quantilesBFloat16WeightedArrayIf&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;ArrayIf&#39;), &#39;varSampArrayIf&#39;: (&#39;varSamp&#39;, &#39;ArrayIf&#39;), &#39;groupArrayLastArrayIf&#39;: (&#39;groupArrayLast&#39;, &#39;ArrayIf&#39;), &#39;sumMapArrayIf&#39;: (&#39;sumMap&#39;, &#39;ArrayIf&#39;), &#39;groupArrayInsertAtArrayIf&#39;: (&#39;groupArrayInsertAt&#39;, &#39;ArrayIf&#39;), &#39;maxMapArrayIf&#39;: (&#39;maxMap&#39;, &#39;ArrayIf&#39;), &#39;quantilesGKArrayIf&#39;: (&#39;quantilesGK&#39;, &#39;ArrayIf&#39;), &#39;quantilesTimingWeightedArrayIf&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;ArrayIf&#39;), &#39;groupUniqArrayArrayIf&#39;: (&#39;groupUniqArray&#39;, &#39;ArrayIf&#39;), &#39;maxArrayIf&#39;: (&#39;max&#39;, &#39;ArrayIf&#39;), &#39;exponentialMovingAverageArrayIf&#39;: (&#39;exponentialMovingAverage&#39;, &#39;ArrayIf&#39;), &#39;quantileExactHighArrayIf&#39;: (&#39;quantileExactHigh&#39;, &#39;ArrayIf&#39;), &#39;largestTriangleThreeBucketsArrayIf&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;ArrayIf&#39;), &#39;cramersVBiasCorrectedArrayIf&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;ArrayIf&#39;), &#39;quantilesExactArrayIf&#39;: (&#39;quantilesExact&#39;, &#39;ArrayIf&#39;), &#39;groupArraySampleArrayIf&#39;: (&#39;groupArraySample&#39;, &#39;ArrayIf&#39;), &#39;stddevPopArrayIf&#39;: (&#39;stddevPop&#39;, &#39;ArrayIf&#39;), &#39;quantileTimingArrayIf&#39;: (&#39;quantileTiming&#39;, &#39;ArrayIf&#39;), &#39;avgWeightedArrayIf&#39;: (&#39;avgWeighted&#39;, &#39;ArrayIf&#39;), &#39;quantileBFloat16ArrayIf&#39;: (&#39;quantileBFloat16&#39;, &#39;ArrayIf&#39;), &#39;minArrayIf&#39;: (&#39;min&#39;, &#39;ArrayIf&#39;), &#39;quantileGKArrayIf&#39;: (&#39;quantileGK&#39;, &#39;ArrayIf&#39;), &#39;intervalLengthSumArrayIf&#39;: (&#39;intervalLengthSum&#39;, &#39;ArrayIf&#39;), &#39;quantileInterpolatedWeightedArrayIf&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;ArrayIf&#39;), &#39;quantileTDigestWeightedArrayIf&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;ArrayIf&#39;), &#39;groupArrayMovingSumArrayIf&#39;: (&#39;groupArrayMovingSum&#39;, &#39;ArrayIf&#39;), &#39;argMaxArrayIf&#39;: (&#39;argMax&#39;, &#39;ArrayIf&#39;), &#39;medianArrayIf&#39;: (&#39;median&#39;, &#39;ArrayIf&#39;), &#39;groupArrayMovingAvgArrayIf&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;ArrayIf&#39;), &#39;groupBitmapXorArrayIf&#39;: (&#39;groupBitmapXor&#39;, &#39;ArrayIf&#39;), &#39;uniqCombined64ArrayIf&#39;: (&#39;uniqCombined64&#39;, &#39;ArrayIf&#39;), &#39;quantilesDeterministicArrayIf&#39;: (&#39;quantilesDeterministic&#39;, &#39;ArrayIf&#39;), &#39;cramersVArrayIf&#39;: (&#39;cramersV&#39;, &#39;ArrayIf&#39;), &#39;groupBitmapArrayIf&#39;: (&#39;groupBitmap&#39;, &#39;ArrayIf&#39;), &#39;sparkBarArrayIf&#39;: (&#39;sparkBar&#39;, &#39;ArrayIf&#39;), &#39;topKArrayIf&#39;: (&#39;topK&#39;, &#39;ArrayIf&#39;), &#39;groupBitAndArrayIf&#39;: (&#39;groupBitAnd&#39;, &#39;ArrayIf&#39;), &#39;uniqExactArrayIf&#39;: (&#39;uniqExact&#39;, &#39;ArrayIf&#39;), &#39;stddevSampArrayIf&#39;: (&#39;stddevSamp&#39;, &#39;ArrayIf&#39;), &#39;first_valueArrayIf&#39;: (&#39;first_value&#39;, &#39;ArrayIf&#39;), &#39;sumWithOverflowArrayIf&#39;: (&#39;sumWithOverflow&#39;, &#39;ArrayIf&#39;), &#39;uniqUpToArrayIf&#39;: (&#39;uniqUpTo&#39;, &#39;ArrayIf&#39;), &#39;quantilesExactHighArrayIf&#39;: (&#39;quantilesExactHigh&#39;, &#39;ArrayIf&#39;), &#39;entropyArrayIf&#39;: (&#39;entropy&#39;, &#39;ArrayIf&#39;), &#39;quantilesTDigestArrayIf&#39;: (&#39;quantilesTDigest&#39;, &#39;ArrayIf&#39;), &#39;quantileTimingWeightedArrayIf&#39;: (&#39;quantileTimingWeighted&#39;, &#39;ArrayIf&#39;), &#39;uniqArrayIf&#39;: (&#39;uniq&#39;, &#39;ArrayIf&#39;), &#39;stochasticLogisticRegressionArrayIf&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;ArrayIf&#39;), &#39;quantileArrayIf&#39;: (&#39;quantile&#39;, &#39;ArrayIf&#39;), &#39;quantileBFloat16WeightedArrayIf&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;ArrayIf&#39;), &#39;kurtPopArrayIf&#39;: (&#39;kurtPop&#39;, &#39;ArrayIf&#39;), &#39;covarSampArrayIf&#39;: (&#39;covarSamp&#39;, &#39;ArrayIf&#39;), &#39;anyLastArrayIf&#39;: (&#39;anyLast&#39;, &#39;ArrayIf&#39;), &#39;uniqThetaArrayIf&#39;: (&#39;uniqTheta&#39;, &#39;ArrayIf&#39;), &#39;covarPopArrayIf&#39;: (&#39;covarPop&#39;, &#39;ArrayIf&#39;), &#39;uniqCombinedArrayIf&#39;: (&#39;uniqCombined&#39;, &#39;ArrayIf&#39;), &#39;quantilesTDigestWeightedArrayIf&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;ArrayIf&#39;), &#39;quantilesBFloat16ArrayIf&#39;: (&#39;quantilesBFloat16&#39;, &#39;ArrayIf&#39;), &#39;skewPopArrayIf&#39;: (&#39;skewPop&#39;, &#39;ArrayIf&#39;), &#39;minMapArrayIf&#39;: (&#39;minMap&#39;, &#39;ArrayIf&#39;), &#39;uniqHLL12ArrayIf&#39;: (&#39;uniqHLL12&#39;, &#39;ArrayIf&#39;), &#39;argMinArrayIf&#39;: (&#39;argMin&#39;, &#39;ArrayIf&#39;), &#39;histogramArrayIf&#39;: (&#39;histogram&#39;, &#39;ArrayIf&#39;), &#39;anyHeavyArrayIf&#39;: (&#39;anyHeavy&#39;, &#39;ArrayIf&#39;), &#39;sequenceNextNodeArrayIf&#39;: (&#39;sequenceNextNode&#39;, &#39;ArrayIf&#39;), &#39;theilsUArrayIf&#39;: (&#39;theilsU&#39;, &#39;ArrayIf&#39;), &#39;groupBitOrArrayIf&#39;: (&#39;groupBitOr&#39;, &#39;ArrayIf&#39;), &#39;mannWhitneyUTestArrayIf&#39;: (&#39;mannWhitneyUTest&#39;, &#39;ArrayIf&#39;), &#39;anyArrayIf&#39;: (&#39;any&#39;, &#39;ArrayIf&#39;), &#39;quantilesInterpolatedWeightedArrayIf&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;ArrayIf&#39;), &#39;stochasticLinearRegressionArrayIf&#39;: (&#39;stochasticLinearRegression&#39;, &#39;ArrayIf&#39;), &#39;studentTTestArrayIf&#39;: (&#39;studentTTest&#39;, &#39;ArrayIf&#39;), &#39;skewSampArrayIf&#39;: (&#39;skewSamp&#39;, &#39;ArrayIf&#39;), &#39;quantileExactWeightedArrayIf&#39;: (&#39;quantileExactWeighted&#39;, &#39;ArrayIf&#39;), &#39;categoricalInformationValueArrayIf&#39;: (&#39;categoricalInformationValue&#39;, &#39;ArrayIf&#39;), &#39;countArrayIf&#39;: (&#39;count&#39;, &#39;ArrayIf&#39;), &#39;kurtSampArrayIf&#39;: (&#39;kurtSamp&#39;, &#39;ArrayIf&#39;), &#39;quantileTDigestArrayIf&#39;: (&#39;quantileTDigest&#39;, &#39;ArrayIf&#39;), &#39;avgArrayIf&#39;: (&#39;avg&#39;, &#39;ArrayIf&#39;), &#39;quantilesExactLowMap&#39;: (&#39;quantilesExactLow&#39;, &#39;Map&#39;), &#39;contingencyMap&#39;: (&#39;contingency&#39;, &#39;Map&#39;), &#39;quantilesExactWeightedMap&#39;: (&#39;quantilesExactWeighted&#39;, &#39;Map&#39;), &#39;boundingRatioMap&#39;: (&#39;boundingRatio&#39;, &#39;Map&#39;), &#39;quantileExactLowMap&#39;: (&#39;quantileExactLow&#39;, &#39;Map&#39;), &#39;exponentialTimeDecayedAvgMap&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;Map&#39;), &#39;quantileDeterministicMap&#39;: (&#39;quantileDeterministic&#39;, &#39;Map&#39;), &#39;maxIntersectionsMap&#39;: (&#39;maxIntersections&#39;, &#39;Map&#39;), &#39;quantilesMap&#39;: (&#39;quantiles&#39;, &#39;Map&#39;), &#39;sequenceMatchMap&#39;: (&#39;sequenceMatch&#39;, &#39;Map&#39;), &#39;deltaSumTimestampMap&#39;: (&#39;deltaSumTimestamp&#39;, &#39;Map&#39;), &#39;groupBitmapAndMap&#39;: (&#39;groupBitmapAnd&#39;, &#39;Map&#39;), &#39;sumMap&#39;: (&#39;sumMap&#39;, &#39;&#39;), &#39;quantilesTimingMap&#39;: (&#39;quantilesTiming&#39;, &#39;Map&#39;), &#39;topKWeightedMap&#39;: (&#39;topKWeighted&#39;, &#39;Map&#39;), &#39;sumCountMap&#39;: (&#39;sumCount&#39;, &#39;Map&#39;), &#39;sequenceCountMap&#39;: (&#39;sequenceCount&#39;, &#39;Map&#39;), &#39;welchTTestMap&#39;: (&#39;welchTTest&#39;, &#39;Map&#39;), &#39;deltaSumMap&#39;: (&#39;deltaSum&#39;, &#39;Map&#39;), &#39;quantileExactMap&#39;: (&#39;quantileExact&#39;, &#39;Map&#39;), &#39;groupArrayMap&#39;: (&#39;groupArray&#39;, &#39;Map&#39;), &#39;groupBitmapOrMap&#39;: (&#39;groupBitmapOr&#39;, &#39;Map&#39;), &#39;maxIntersectionsPositionMap&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;Map&#39;), &#39;retentionMap&#39;: (&#39;retention&#39;, &#39;Map&#39;), &#39;kolmogorovSmirnovTestMap&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;Map&#39;), &#39;windowFunnelMap&#39;: (&#39;windowFunnel&#39;, &#39;Map&#39;), &#39;meanZTestMap&#39;: (&#39;meanZTest&#39;, &#39;Map&#39;), &#39;rankCorrMap&#39;: (&#39;rankCorr&#39;, &#39;Map&#39;), &#39;groupBitXorMap&#39;: (&#39;groupBitXor&#39;, &#39;Map&#39;), &#39;corrMap&#39;: (&#39;corr&#39;, &#39;Map&#39;), &#39;varPopMap&#39;: (&#39;varPop&#39;, &#39;Map&#39;), &#39;last_valueMap&#39;: (&#39;last_value&#39;, &#39;Map&#39;), &#39;sumKahanMap&#39;: (&#39;sumKahan&#39;, &#39;Map&#39;), &#39;simpleLinearRegressionMap&#39;: (&#39;simpleLinearRegression&#39;, &#39;Map&#39;), &#39;quantilesBFloat16WeightedMap&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;Map&#39;), &#39;varSampMap&#39;: (&#39;varSamp&#39;, &#39;Map&#39;), &#39;groupArrayLastMap&#39;: (&#39;groupArrayLast&#39;, &#39;Map&#39;), &#39;sumMapMap&#39;: (&#39;sumMap&#39;, &#39;Map&#39;), &#39;groupArrayInsertAtMap&#39;: (&#39;groupArrayInsertAt&#39;, &#39;Map&#39;), &#39;maxMapMap&#39;: (&#39;maxMap&#39;, &#39;Map&#39;), &#39;quantilesGKMap&#39;: (&#39;quantilesGK&#39;, &#39;Map&#39;), &#39;quantilesTimingWeightedMap&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;Map&#39;), &#39;groupUniqArrayMap&#39;: (&#39;groupUniqArray&#39;, &#39;Map&#39;), &#39;maxMap&#39;: (&#39;maxMap&#39;, &#39;&#39;), &#39;exponentialMovingAverageMap&#39;: (&#39;exponentialMovingAverage&#39;, &#39;Map&#39;), &#39;quantileExactHighMap&#39;: (&#39;quantileExactHigh&#39;, &#39;Map&#39;), &#39;largestTriangleThreeBucketsMap&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;Map&#39;), &#39;cramersVBiasCorrectedMap&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;Map&#39;), &#39;quantilesExactMap&#39;: (&#39;quantilesExact&#39;, &#39;Map&#39;), &#39;groupArraySampleMap&#39;: (&#39;groupArraySample&#39;, &#39;Map&#39;), &#39;stddevPopMap&#39;: (&#39;stddevPop&#39;, &#39;Map&#39;), &#39;quantileTimingMap&#39;: (&#39;quantileTiming&#39;, &#39;Map&#39;), &#39;avgWeightedMap&#39;: (&#39;avgWeighted&#39;, &#39;Map&#39;), &#39;quantileBFloat16Map&#39;: (&#39;quantileBFloat16&#39;, &#39;Map&#39;), &#39;minMap&#39;: (&#39;minMap&#39;, &#39;&#39;), &#39;quantileGKMap&#39;: (&#39;quantileGK&#39;, &#39;Map&#39;), &#39;intervalLengthSumMap&#39;: (&#39;intervalLengthSum&#39;, &#39;Map&#39;), &#39;quantileInterpolatedWeightedMap&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;Map&#39;), &#39;quantileTDigestWeightedMap&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;Map&#39;), &#39;groupArrayMovingSumMap&#39;: (&#39;groupArrayMovingSum&#39;, &#39;Map&#39;), &#39;argMaxMap&#39;: (&#39;argMax&#39;, &#39;Map&#39;), &#39;medianMap&#39;: (&#39;median&#39;, &#39;Map&#39;), &#39;groupArrayMovingAvgMap&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;Map&#39;), &#39;groupBitmapXorMap&#39;: (&#39;groupBitmapXor&#39;, &#39;Map&#39;), &#39;uniqCombined64Map&#39;: (&#39;uniqCombined64&#39;, &#39;Map&#39;), &#39;quantilesDeterministicMap&#39;: (&#39;quantilesDeterministic&#39;, &#39;Map&#39;), &#39;cramersVMap&#39;: (&#39;cramersV&#39;, &#39;Map&#39;), &#39;groupBitmapMap&#39;: (&#39;groupBitmap&#39;, &#39;Map&#39;), &#39;sparkBarMap&#39;: (&#39;sparkBar&#39;, &#39;Map&#39;), &#39;topKMap&#39;: (&#39;topK&#39;, &#39;Map&#39;), &#39;groupBitAndMap&#39;: (&#39;groupBitAnd&#39;, &#39;Map&#39;), &#39;uniqExactMap&#39;: (&#39;uniqExact&#39;, &#39;Map&#39;), &#39;stddevSampMap&#39;: (&#39;stddevSamp&#39;, &#39;Map&#39;), &#39;first_valueMap&#39;: (&#39;first_value&#39;, &#39;Map&#39;), &#39;sumWithOverflowMap&#39;: (&#39;sumWithOverflow&#39;, &#39;Map&#39;), &#39;uniqUpToMap&#39;: (&#39;uniqUpTo&#39;, &#39;Map&#39;), &#39;quantilesExactHighMap&#39;: (&#39;quantilesExactHigh&#39;, &#39;Map&#39;), &#39;entropyMap&#39;: (&#39;entropy&#39;, &#39;Map&#39;), &#39;quantilesTDigestMap&#39;: (&#39;quantilesTDigest&#39;, &#39;Map&#39;), &#39;quantileTimingWeightedMap&#39;: (&#39;quantileTimingWeighted&#39;, &#39;Map&#39;), &#39;uniqMap&#39;: (&#39;uniq&#39;, &#39;Map&#39;), &#39;stochasticLogisticRegressionMap&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;Map&#39;), &#39;quantileMap&#39;: (&#39;quantile&#39;, &#39;Map&#39;), &#39;quantileBFloat16WeightedMap&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;Map&#39;), &#39;kurtPopMap&#39;: (&#39;kurtPop&#39;, &#39;Map&#39;), &#39;covarSampMap&#39;: (&#39;covarSamp&#39;, &#39;Map&#39;), &#39;anyLastMap&#39;: (&#39;anyLast&#39;, &#39;Map&#39;), &#39;uniqThetaMap&#39;: (&#39;uniqTheta&#39;, &#39;Map&#39;), &#39;covarPopMap&#39;: (&#39;covarPop&#39;, &#39;Map&#39;), &#39;uniqCombinedMap&#39;: (&#39;uniqCombined&#39;, &#39;Map&#39;), &#39;quantilesTDigestWeightedMap&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;Map&#39;), &#39;quantilesBFloat16Map&#39;: (&#39;quantilesBFloat16&#39;, &#39;Map&#39;), &#39;skewPopMap&#39;: (&#39;skewPop&#39;, &#39;Map&#39;), &#39;minMapMap&#39;: (&#39;minMap&#39;, &#39;Map&#39;), &#39;uniqHLL12Map&#39;: (&#39;uniqHLL12&#39;, &#39;Map&#39;), &#39;argMinMap&#39;: (&#39;argMin&#39;, &#39;Map&#39;), &#39;histogramMap&#39;: (&#39;histogram&#39;, &#39;Map&#39;), &#39;anyHeavyMap&#39;: (&#39;anyHeavy&#39;, &#39;Map&#39;), &#39;sequenceNextNodeMap&#39;: (&#39;sequenceNextNode&#39;, &#39;Map&#39;), &#39;theilsUMap&#39;: (&#39;theilsU&#39;, &#39;Map&#39;), &#39;groupBitOrMap&#39;: (&#39;groupBitOr&#39;, &#39;Map&#39;), &#39;mannWhitneyUTestMap&#39;: (&#39;mannWhitneyUTest&#39;, &#39;Map&#39;), &#39;anyMap&#39;: (&#39;any&#39;, &#39;Map&#39;), &#39;quantilesInterpolatedWeightedMap&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;Map&#39;), &#39;stochasticLinearRegressionMap&#39;: (&#39;stochasticLinearRegression&#39;, &#39;Map&#39;), &#39;studentTTestMap&#39;: (&#39;studentTTest&#39;, &#39;Map&#39;), &#39;skewSampMap&#39;: (&#39;skewSamp&#39;, &#39;Map&#39;), &#39;quantileExactWeightedMap&#39;: (&#39;quantileExactWeighted&#39;, &#39;Map&#39;), &#39;categoricalInformationValueMap&#39;: (&#39;categoricalInformationValue&#39;, &#39;Map&#39;), &#39;countMap&#39;: (&#39;count&#39;, &#39;Map&#39;), &#39;kurtSampMap&#39;: (&#39;kurtSamp&#39;, &#39;Map&#39;), &#39;quantileTDigestMap&#39;: (&#39;quantileTDigest&#39;, &#39;Map&#39;), &#39;avgMap&#39;: (&#39;avg&#39;, &#39;Map&#39;), &#39;quantilesExactLowSimpleState&#39;: (&#39;quantilesExactLow&#39;, &#39;SimpleState&#39;), &#39;contingencySimpleState&#39;: (&#39;contingency&#39;, &#39;SimpleState&#39;), &#39;quantilesExactWeightedSimpleState&#39;: (&#39;quantilesExactWeighted&#39;, &#39;SimpleState&#39;), &#39;boundingRatioSimpleState&#39;: (&#39;boundingRatio&#39;, &#39;SimpleState&#39;), &#39;quantileExactLowSimpleState&#39;: (&#39;quantileExactLow&#39;, &#39;SimpleState&#39;), &#39;exponentialTimeDecayedAvgSimpleState&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;SimpleState&#39;), &#39;quantileDeterministicSimpleState&#39;: (&#39;quantileDeterministic&#39;, &#39;SimpleState&#39;), &#39;maxIntersectionsSimpleState&#39;: (&#39;maxIntersections&#39;, &#39;SimpleState&#39;), &#39;quantilesSimpleState&#39;: (&#39;quantiles&#39;, &#39;SimpleState&#39;), &#39;sequenceMatchSimpleState&#39;: (&#39;sequenceMatch&#39;, &#39;SimpleState&#39;), &#39;deltaSumTimestampSimpleState&#39;: (&#39;deltaSumTimestamp&#39;, &#39;SimpleState&#39;), &#39;groupBitmapAndSimpleState&#39;: (&#39;groupBitmapAnd&#39;, &#39;SimpleState&#39;), &#39;sumSimpleState&#39;: (&#39;sum&#39;, &#39;SimpleState&#39;), &#39;quantilesTimingSimpleState&#39;: (&#39;quantilesTiming&#39;, &#39;SimpleState&#39;), &#39;topKWeightedSimpleState&#39;: (&#39;topKWeighted&#39;, &#39;SimpleState&#39;), &#39;sumCountSimpleState&#39;: (&#39;sumCount&#39;, &#39;SimpleState&#39;), &#39;sequenceCountSimpleState&#39;: (&#39;sequenceCount&#39;, &#39;SimpleState&#39;), &#39;welchTTestSimpleState&#39;: (&#39;welchTTest&#39;, &#39;SimpleState&#39;), &#39;deltaSumSimpleState&#39;: (&#39;deltaSum&#39;, &#39;SimpleState&#39;), &#39;quantileExactSimpleState&#39;: (&#39;quantileExact&#39;, &#39;SimpleState&#39;), &#39;groupArraySimpleState&#39;: (&#39;groupArray&#39;, &#39;SimpleState&#39;), &#39;groupBitmapOrSimpleState&#39;: (&#39;groupBitmapOr&#39;, &#39;SimpleState&#39;), &#39;maxIntersectionsPositionSimpleState&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;SimpleState&#39;), &#39;retentionSimpleState&#39;: (&#39;retention&#39;, &#39;SimpleState&#39;), &#39;kolmogorovSmirnovTestSimpleState&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;SimpleState&#39;), &#39;windowFunnelSimpleState&#39;: (&#39;windowFunnel&#39;, &#39;SimpleState&#39;), &#39;meanZTestSimpleState&#39;: (&#39;meanZTest&#39;, &#39;SimpleState&#39;), &#39;rankCorrSimpleState&#39;: (&#39;rankCorr&#39;, &#39;SimpleState&#39;), &#39;groupBitXorSimpleState&#39;: (&#39;groupBitXor&#39;, &#39;SimpleState&#39;), &#39;corrSimpleState&#39;: (&#39;corr&#39;, &#39;SimpleState&#39;), &#39;varPopSimpleState&#39;: (&#39;varPop&#39;, &#39;SimpleState&#39;), &#39;last_valueSimpleState&#39;: (&#39;last_value&#39;, &#39;SimpleState&#39;), &#39;sumKahanSimpleState&#39;: (&#39;sumKahan&#39;, &#39;SimpleState&#39;), &#39;simpleLinearRegressionSimpleState&#39;: (&#39;simpleLinearRegression&#39;, &#39;SimpleState&#39;), &#39;quantilesBFloat16WeightedSimpleState&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;SimpleState&#39;), &#39;varSampSimpleState&#39;: (&#39;varSamp&#39;, &#39;SimpleState&#39;), &#39;groupArrayLastSimpleState&#39;: (&#39;groupArrayLast&#39;, &#39;SimpleState&#39;), &#39;sumMapSimpleState&#39;: (&#39;sumMap&#39;, &#39;SimpleState&#39;), &#39;groupArrayInsertAtSimpleState&#39;: (&#39;groupArrayInsertAt&#39;, &#39;SimpleState&#39;), &#39;maxMapSimpleState&#39;: (&#39;maxMap&#39;, &#39;SimpleState&#39;), &#39;quantilesGKSimpleState&#39;: (&#39;quantilesGK&#39;, &#39;SimpleState&#39;), &#39;quantilesTimingWeightedSimpleState&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;SimpleState&#39;), &#39;groupUniqArraySimpleState&#39;: (&#39;groupUniqArray&#39;, &#39;SimpleState&#39;), &#39;maxSimpleState&#39;: (&#39;max&#39;, &#39;SimpleState&#39;), &#39;exponentialMovingAverageSimpleState&#39;: (&#39;exponentialMovingAverage&#39;, &#39;SimpleState&#39;), &#39;quantileExactHighSimpleState&#39;: (&#39;quantileExactHigh&#39;, &#39;SimpleState&#39;), &#39;largestTriangleThreeBucketsSimpleState&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;SimpleState&#39;), &#39;cramersVBiasCorrectedSimpleState&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;SimpleState&#39;), &#39;quantilesExactSimpleState&#39;: (&#39;quantilesExact&#39;, &#39;SimpleState&#39;), &#39;groupArraySampleSimpleState&#39;: (&#39;groupArraySample&#39;, &#39;SimpleState&#39;), &#39;stddevPopSimpleState&#39;: (&#39;stddevPop&#39;, &#39;SimpleState&#39;), &#39;quantileTimingSimpleState&#39;: (&#39;quantileTiming&#39;, &#39;SimpleState&#39;), &#39;avgWeightedSimpleState&#39;: (&#39;avgWeighted&#39;, &#39;SimpleState&#39;), &#39;quantileBFloat16SimpleState&#39;: (&#39;quantileBFloat16&#39;, &#39;SimpleState&#39;), &#39;minSimpleState&#39;: (&#39;min&#39;, &#39;SimpleState&#39;), &#39;quantileGKSimpleState&#39;: (&#39;quantileGK&#39;, &#39;SimpleState&#39;), &#39;intervalLengthSumSimpleState&#39;: (&#39;intervalLengthSum&#39;, &#39;SimpleState&#39;), &#39;quantileInterpolatedWeightedSimpleState&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;SimpleState&#39;), &#39;quantileTDigestWeightedSimpleState&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;SimpleState&#39;), &#39;groupArrayMovingSumSimpleState&#39;: (&#39;groupArrayMovingSum&#39;, &#39;SimpleState&#39;), &#39;argMaxSimpleState&#39;: (&#39;argMax&#39;, &#39;SimpleState&#39;), &#39;medianSimpleState&#39;: (&#39;median&#39;, &#39;SimpleState&#39;), &#39;groupArrayMovingAvgSimpleState&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;SimpleState&#39;), &#39;groupBitmapXorSimpleState&#39;: (&#39;groupBitmapXor&#39;, &#39;SimpleState&#39;), &#39;uniqCombined64SimpleState&#39;: (&#39;uniqCombined64&#39;, &#39;SimpleState&#39;), &#39;quantilesDeterministicSimpleState&#39;: (&#39;quantilesDeterministic&#39;, &#39;SimpleState&#39;), &#39;cramersVSimpleState&#39;: (&#39;cramersV&#39;, &#39;SimpleState&#39;), &#39;groupBitmapSimpleState&#39;: (&#39;groupBitmap&#39;, &#39;SimpleState&#39;), &#39;sparkBarSimpleState&#39;: (&#39;sparkBar&#39;, &#39;SimpleState&#39;), &#39;topKSimpleState&#39;: (&#39;topK&#39;, &#39;SimpleState&#39;), &#39;groupBitAndSimpleState&#39;: (&#39;groupBitAnd&#39;, &#39;SimpleState&#39;), &#39;uniqExactSimpleState&#39;: (&#39;uniqExact&#39;, &#39;SimpleState&#39;), &#39;stddevSampSimpleState&#39;: (&#39;stddevSamp&#39;, &#39;SimpleState&#39;), &#39;first_valueSimpleState&#39;: (&#39;first_value&#39;, &#39;SimpleState&#39;), &#39;sumWithOverflowSimpleState&#39;: (&#39;sumWithOverflow&#39;, &#39;SimpleState&#39;), &#39;uniqUpToSimpleState&#39;: (&#39;uniqUpTo&#39;, &#39;SimpleState&#39;), &#39;quantilesExactHighSimpleState&#39;: (&#39;quantilesExactHigh&#39;, &#39;SimpleState&#39;), &#39;entropySimpleState&#39;: (&#39;entropy&#39;, &#39;SimpleState&#39;), &#39;quantilesTDigestSimpleState&#39;: (&#39;quantilesTDigest&#39;, &#39;SimpleState&#39;), &#39;quantileTimingWeightedSimpleState&#39;: (&#39;quantileTimingWeighted&#39;, &#39;SimpleState&#39;), &#39;uniqSimpleState&#39;: (&#39;uniq&#39;, &#39;SimpleState&#39;), &#39;stochasticLogisticRegressionSimpleState&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;SimpleState&#39;), &#39;quantileSimpleState&#39;: (&#39;quantile&#39;, &#39;SimpleState&#39;), &#39;quantileBFloat16WeightedSimpleState&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;SimpleState&#39;), &#39;kurtPopSimpleState&#39;: (&#39;kurtPop&#39;, &#39;SimpleState&#39;), &#39;covarSampSimpleState&#39;: (&#39;covarSamp&#39;, &#39;SimpleState&#39;), &#39;anyLastSimpleState&#39;: (&#39;anyLast&#39;, &#39;SimpleState&#39;), &#39;uniqThetaSimpleState&#39;: (&#39;uniqTheta&#39;, &#39;SimpleState&#39;), &#39;covarPopSimpleState&#39;: (&#39;covarPop&#39;, &#39;SimpleState&#39;), &#39;uniqCombinedSimpleState&#39;: (&#39;uniqCombined&#39;, &#39;SimpleState&#39;), &#39;quantilesTDigestWeightedSimpleState&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;SimpleState&#39;), &#39;quantilesBFloat16SimpleState&#39;: (&#39;quantilesBFloat16&#39;, &#39;SimpleState&#39;), &#39;skewPopSimpleState&#39;: (&#39;skewPop&#39;, &#39;SimpleState&#39;), &#39;minMapSimpleState&#39;: (&#39;minMap&#39;, &#39;SimpleState&#39;), &#39;uniqHLL12SimpleState&#39;: (&#39;uniqHLL12&#39;, &#39;SimpleState&#39;), &#39;argMinSimpleState&#39;: (&#39;argMin&#39;, &#39;SimpleState&#39;), &#39;histogramSimpleState&#39;: (&#39;histogram&#39;, &#39;SimpleState&#39;), &#39;anyHeavySimpleState&#39;: (&#39;anyHeavy&#39;, &#39;SimpleState&#39;), &#39;sequenceNextNodeSimpleState&#39;: (&#39;sequenceNextNode&#39;, &#39;SimpleState&#39;), &#39;theilsUSimpleState&#39;: (&#39;theilsU&#39;, &#39;SimpleState&#39;), &#39;groupBitOrSimpleState&#39;: (&#39;groupBitOr&#39;, &#39;SimpleState&#39;), &#39;mannWhitneyUTestSimpleState&#39;: (&#39;mannWhitneyUTest&#39;, &#39;SimpleState&#39;), &#39;anySimpleState&#39;: (&#39;any&#39;, &#39;SimpleState&#39;), &#39;quantilesInterpolatedWeightedSimpleState&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;SimpleState&#39;), &#39;stochasticLinearRegressionSimpleState&#39;: (&#39;stochasticLinearRegression&#39;, &#39;SimpleState&#39;), &#39;studentTTestSimpleState&#39;: (&#39;studentTTest&#39;, &#39;SimpleState&#39;), &#39;skewSampSimpleState&#39;: (&#39;skewSamp&#39;, &#39;SimpleState&#39;), &#39;quantileExactWeightedSimpleState&#39;: (&#39;quantileExactWeighted&#39;, &#39;SimpleState&#39;), &#39;categoricalInformationValueSimpleState&#39;: (&#39;categoricalInformationValue&#39;, &#39;SimpleState&#39;), &#39;countSimpleState&#39;: (&#39;count&#39;, &#39;SimpleState&#39;), &#39;kurtSampSimpleState&#39;: (&#39;kurtSamp&#39;, &#39;SimpleState&#39;), &#39;quantileTDigestSimpleState&#39;: (&#39;quantileTDigest&#39;, &#39;SimpleState&#39;), &#39;avgSimpleState&#39;: (&#39;avg&#39;, &#39;SimpleState&#39;), &#39;quantilesExactLowState&#39;: (&#39;quantilesExactLow&#39;, &#39;State&#39;), &#39;contingencyState&#39;: (&#39;contingency&#39;, &#39;State&#39;), &#39;quantilesExactWeightedState&#39;: (&#39;quantilesExactWeighted&#39;, &#39;State&#39;), &#39;boundingRatioState&#39;: (&#39;boundingRatio&#39;, &#39;State&#39;), &#39;quantileExactLowState&#39;: (&#39;quantileExactLow&#39;, &#39;State&#39;), &#39;exponentialTimeDecayedAvgState&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;State&#39;), &#39;quantileDeterministicState&#39;: (&#39;quantileDeterministic&#39;, &#39;State&#39;), &#39;maxIntersectionsState&#39;: (&#39;maxIntersections&#39;, &#39;State&#39;), &#39;quantilesState&#39;: (&#39;quantiles&#39;, &#39;State&#39;), &#39;sequenceMatchState&#39;: (&#39;sequenceMatch&#39;, &#39;State&#39;), &#39;deltaSumTimestampState&#39;: (&#39;deltaSumTimestamp&#39;, &#39;State&#39;), &#39;groupBitmapAndState&#39;: (&#39;groupBitmapAnd&#39;, &#39;State&#39;), &#39;sumState&#39;: (&#39;sum&#39;, &#39;State&#39;), &#39;quantilesTimingState&#39;: (&#39;quantilesTiming&#39;, &#39;State&#39;), &#39;topKWeightedState&#39;: (&#39;topKWeighted&#39;, &#39;State&#39;), &#39;sumCountState&#39;: (&#39;sumCount&#39;, &#39;State&#39;), &#39;sequenceCountState&#39;: (&#39;sequenceCount&#39;, &#39;State&#39;), &#39;welchTTestState&#39;: (&#39;welchTTest&#39;, &#39;State&#39;), &#39;deltaSumState&#39;: (&#39;deltaSum&#39;, &#39;State&#39;), &#39;quantileExactState&#39;: (&#39;quantileExact&#39;, &#39;State&#39;), &#39;groupArrayState&#39;: (&#39;groupArray&#39;, &#39;State&#39;), &#39;groupBitmapOrState&#39;: (&#39;groupBitmapOr&#39;, &#39;State&#39;), &#39;maxIntersectionsPositionState&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;State&#39;), &#39;retentionState&#39;: (&#39;retention&#39;, &#39;State&#39;), &#39;kolmogorovSmirnovTestState&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;State&#39;), &#39;windowFunnelState&#39;: (&#39;windowFunnel&#39;, &#39;State&#39;), &#39;meanZTestState&#39;: (&#39;meanZTest&#39;, &#39;State&#39;), &#39;rankCorrState&#39;: (&#39;rankCorr&#39;, &#39;State&#39;), &#39;groupBitXorState&#39;: (&#39;groupBitXor&#39;, &#39;State&#39;), &#39;corrState&#39;: (&#39;corr&#39;, &#39;State&#39;), &#39;varPopState&#39;: (&#39;varPop&#39;, &#39;State&#39;), &#39;last_valueState&#39;: (&#39;last_value&#39;, &#39;State&#39;), &#39;sumKahanState&#39;: (&#39;sumKahan&#39;, &#39;State&#39;), &#39;simpleLinearRegressionState&#39;: (&#39;simpleLinearRegression&#39;, &#39;State&#39;), &#39;quantilesBFloat16WeightedState&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;State&#39;), &#39;varSampState&#39;: (&#39;varSamp&#39;, &#39;State&#39;), &#39;groupArrayLastState&#39;: (&#39;groupArrayLast&#39;, &#39;State&#39;), &#39;sumMapState&#39;: (&#39;sumMap&#39;, &#39;State&#39;), &#39;groupArrayInsertAtState&#39;: (&#39;groupArrayInsertAt&#39;, &#39;State&#39;), &#39;maxMapState&#39;: (&#39;maxMap&#39;, &#39;State&#39;), &#39;quantilesGKState&#39;: (&#39;quantilesGK&#39;, &#39;State&#39;), &#39;quantilesTimingWeightedState&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;State&#39;), &#39;groupUniqArrayState&#39;: (&#39;groupUniqArray&#39;, &#39;State&#39;), &#39;maxState&#39;: (&#39;max&#39;, &#39;State&#39;), &#39;exponentialMovingAverageState&#39;: (&#39;exponentialMovingAverage&#39;, &#39;State&#39;), &#39;quantileExactHighState&#39;: (&#39;quantileExactHigh&#39;, &#39;State&#39;), &#39;largestTriangleThreeBucketsState&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;State&#39;), &#39;cramersVBiasCorrectedState&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;State&#39;), &#39;quantilesExactState&#39;: (&#39;quantilesExact&#39;, &#39;State&#39;), &#39;groupArraySampleState&#39;: (&#39;groupArraySample&#39;, &#39;State&#39;), &#39;stddevPopState&#39;: (&#39;stddevPop&#39;, &#39;State&#39;), &#39;quantileTimingState&#39;: (&#39;quantileTiming&#39;, &#39;State&#39;), &#39;avgWeightedState&#39;: (&#39;avgWeighted&#39;, &#39;State&#39;), &#39;quantileBFloat16State&#39;: (&#39;quantileBFloat16&#39;, &#39;State&#39;), &#39;minState&#39;: (&#39;min&#39;, &#39;State&#39;), &#39;quantileGKState&#39;: (&#39;quantileGK&#39;, &#39;State&#39;), &#39;intervalLengthSumState&#39;: (&#39;intervalLengthSum&#39;, &#39;State&#39;), &#39;quantileInterpolatedWeightedState&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;State&#39;), &#39;quantileTDigestWeightedState&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;State&#39;), &#39;groupArrayMovingSumState&#39;: (&#39;groupArrayMovingSum&#39;, &#39;State&#39;), &#39;argMaxState&#39;: (&#39;argMax&#39;, &#39;State&#39;), &#39;medianState&#39;: (&#39;median&#39;, &#39;State&#39;), &#39;groupArrayMovingAvgState&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;State&#39;), &#39;groupBitmapXorState&#39;: (&#39;groupBitmapXor&#39;, &#39;State&#39;), &#39;uniqCombined64State&#39;: (&#39;uniqCombined64&#39;, &#39;State&#39;), &#39;quantilesDeterministicState&#39;: (&#39;quantilesDeterministic&#39;, &#39;State&#39;), &#39;cramersVState&#39;: (&#39;cramersV&#39;, &#39;State&#39;), &#39;groupBitmapState&#39;: (&#39;groupBitmap&#39;, &#39;State&#39;), &#39;sparkBarState&#39;: (&#39;sparkBar&#39;, &#39;State&#39;), &#39;topKState&#39;: (&#39;topK&#39;, &#39;State&#39;), &#39;groupBitAndState&#39;: (&#39;groupBitAnd&#39;, &#39;State&#39;), &#39;uniqExactState&#39;: (&#39;uniqExact&#39;, &#39;State&#39;), &#39;stddevSampState&#39;: (&#39;stddevSamp&#39;, &#39;State&#39;), &#39;first_valueState&#39;: (&#39;first_value&#39;, &#39;State&#39;), &#39;sumWithOverflowState&#39;: (&#39;sumWithOverflow&#39;, &#39;State&#39;), &#39;uniqUpToState&#39;: (&#39;uniqUpTo&#39;, &#39;State&#39;), &#39;quantilesExactHighState&#39;: (&#39;quantilesExactHigh&#39;, &#39;State&#39;), &#39;entropyState&#39;: (&#39;entropy&#39;, &#39;State&#39;), &#39;quantilesTDigestState&#39;: (&#39;quantilesTDigest&#39;, &#39;State&#39;), &#39;quantileTimingWeightedState&#39;: (&#39;quantileTimingWeighted&#39;, &#39;State&#39;), &#39;uniqState&#39;: (&#39;uniq&#39;, &#39;State&#39;), &#39;stochasticLogisticRegressionState&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;State&#39;), &#39;quantileState&#39;: (&#39;quantile&#39;, &#39;State&#39;), &#39;quantileBFloat16WeightedState&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;State&#39;), &#39;kurtPopState&#39;: (&#39;kurtPop&#39;, &#39;State&#39;), &#39;covarSampState&#39;: (&#39;covarSamp&#39;, &#39;State&#39;), &#39;anyLastState&#39;: (&#39;anyLast&#39;, &#39;State&#39;), &#39;uniqThetaState&#39;: (&#39;uniqTheta&#39;, &#39;State&#39;), &#39;covarPopState&#39;: (&#39;covarPop&#39;, &#39;State&#39;), &#39;uniqCombinedState&#39;: (&#39;uniqCombined&#39;, &#39;State&#39;), &#39;quantilesTDigestWeightedState&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;State&#39;), &#39;quantilesBFloat16State&#39;: (&#39;quantilesBFloat16&#39;, &#39;State&#39;), &#39;skewPopState&#39;: (&#39;skewPop&#39;, &#39;State&#39;), &#39;minMapState&#39;: (&#39;minMap&#39;, &#39;State&#39;), &#39;uniqHLL12State&#39;: (&#39;uniqHLL12&#39;, &#39;State&#39;), &#39;argMinState&#39;: (&#39;argMin&#39;, &#39;State&#39;), &#39;histogramState&#39;: (&#39;histogram&#39;, &#39;State&#39;), &#39;anyHeavyState&#39;: (&#39;anyHeavy&#39;, &#39;State&#39;), &#39;sequenceNextNodeState&#39;: (&#39;sequenceNextNode&#39;, &#39;State&#39;), &#39;theilsUState&#39;: (&#39;theilsU&#39;, &#39;State&#39;), &#39;groupBitOrState&#39;: (&#39;groupBitOr&#39;, &#39;State&#39;), &#39;mannWhitneyUTestState&#39;: (&#39;mannWhitneyUTest&#39;, &#39;State&#39;), &#39;anyState&#39;: (&#39;any&#39;, &#39;State&#39;), &#39;quantilesInterpolatedWeightedState&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;State&#39;), &#39;stochasticLinearRegressionState&#39;: (&#39;stochasticLinearRegression&#39;, &#39;State&#39;), &#39;studentTTestState&#39;: (&#39;studentTTest&#39;, &#39;State&#39;), &#39;skewSampState&#39;: (&#39;skewSamp&#39;, &#39;State&#39;), &#39;quantileExactWeightedState&#39;: (&#39;quantileExactWeighted&#39;, &#39;State&#39;), &#39;categoricalInformationValueState&#39;: (&#39;categoricalInformationValue&#39;, &#39;State&#39;), &#39;countState&#39;: (&#39;count&#39;, &#39;State&#39;), &#39;kurtSampState&#39;: (&#39;kurtSamp&#39;, &#39;State&#39;), &#39;quantileTDigestState&#39;: (&#39;quantileTDigest&#39;, &#39;State&#39;), &#39;avgState&#39;: (&#39;avg&#39;, &#39;State&#39;), &#39;quantilesExactLowMerge&#39;: (&#39;quantilesExactLow&#39;, &#39;Merge&#39;), &#39;contingencyMerge&#39;: (&#39;contingency&#39;, &#39;Merge&#39;), &#39;quantilesExactWeightedMerge&#39;: (&#39;quantilesExactWeighted&#39;, &#39;Merge&#39;), &#39;boundingRatioMerge&#39;: (&#39;boundingRatio&#39;, &#39;Merge&#39;), &#39;quantileExactLowMerge&#39;: (&#39;quantileExactLow&#39;, &#39;Merge&#39;), &#39;exponentialTimeDecayedAvgMerge&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;Merge&#39;), &#39;quantileDeterministicMerge&#39;: (&#39;quantileDeterministic&#39;, &#39;Merge&#39;), &#39;maxIntersectionsMerge&#39;: (&#39;maxIntersections&#39;, &#39;Merge&#39;), &#39;quantilesMerge&#39;: (&#39;quantiles&#39;, &#39;Merge&#39;), &#39;sequenceMatchMerge&#39;: (&#39;sequenceMatch&#39;, &#39;Merge&#39;), &#39;deltaSumTimestampMerge&#39;: (&#39;deltaSumTimestamp&#39;, &#39;Merge&#39;), &#39;groupBitmapAndMerge&#39;: (&#39;groupBitmapAnd&#39;, &#39;Merge&#39;), &#39;sumMerge&#39;: (&#39;sum&#39;, &#39;Merge&#39;), &#39;quantilesTimingMerge&#39;: (&#39;quantilesTiming&#39;, &#39;Merge&#39;), &#39;topKWeightedMerge&#39;: (&#39;topKWeighted&#39;, &#39;Merge&#39;), &#39;sumCountMerge&#39;: (&#39;sumCount&#39;, &#39;Merge&#39;), &#39;sequenceCountMerge&#39;: (&#39;sequenceCount&#39;, &#39;Merge&#39;), &#39;welchTTestMerge&#39;: (&#39;welchTTest&#39;, &#39;Merge&#39;), &#39;deltaSumMerge&#39;: (&#39;deltaSum&#39;, &#39;Merge&#39;), &#39;quantileExactMerge&#39;: (&#39;quantileExact&#39;, &#39;Merge&#39;), &#39;groupArrayMerge&#39;: (&#39;groupArray&#39;, &#39;Merge&#39;), &#39;groupBitmapOrMerge&#39;: (&#39;groupBitmapOr&#39;, &#39;Merge&#39;), &#39;maxIntersectionsPositionMerge&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;Merge&#39;), &#39;retentionMerge&#39;: (&#39;retention&#39;, &#39;Merge&#39;), &#39;kolmogorovSmirnovTestMerge&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;Merge&#39;), &#39;windowFunnelMerge&#39;: (&#39;windowFunnel&#39;, &#39;Merge&#39;), &#39;meanZTestMerge&#39;: (&#39;meanZTest&#39;, &#39;Merge&#39;), &#39;rankCorrMerge&#39;: (&#39;rankCorr&#39;, &#39;Merge&#39;), &#39;groupBitXorMerge&#39;: (&#39;groupBitXor&#39;, &#39;Merge&#39;), &#39;corrMerge&#39;: (&#39;corr&#39;, &#39;Merge&#39;), &#39;varPopMerge&#39;: (&#39;varPop&#39;, &#39;Merge&#39;), &#39;last_valueMerge&#39;: (&#39;last_value&#39;, &#39;Merge&#39;), &#39;sumKahanMerge&#39;: (&#39;sumKahan&#39;, &#39;Merge&#39;), &#39;simpleLinearRegressionMerge&#39;: (&#39;simpleLinearRegression&#39;, &#39;Merge&#39;), &#39;quantilesBFloat16WeightedMerge&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;Merge&#39;), &#39;varSampMerge&#39;: (&#39;varSamp&#39;, &#39;Merge&#39;), &#39;groupArrayLastMerge&#39;: (&#39;groupArrayLast&#39;, &#39;Merge&#39;), &#39;sumMapMerge&#39;: (&#39;sumMap&#39;, &#39;Merge&#39;), &#39;groupArrayInsertAtMerge&#39;: (&#39;groupArrayInsertAt&#39;, &#39;Merge&#39;), &#39;maxMapMerge&#39;: (&#39;maxMap&#39;, &#39;Merge&#39;), &#39;quantilesGKMerge&#39;: (&#39;quantilesGK&#39;, &#39;Merge&#39;), &#39;quantilesTimingWeightedMerge&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;Merge&#39;), &#39;groupUniqArrayMerge&#39;: (&#39;groupUniqArray&#39;, &#39;Merge&#39;), &#39;maxMerge&#39;: (&#39;max&#39;, &#39;Merge&#39;), &#39;exponentialMovingAverageMerge&#39;: (&#39;exponentialMovingAverage&#39;, &#39;Merge&#39;), &#39;quantileExactHighMerge&#39;: (&#39;quantileExactHigh&#39;, &#39;Merge&#39;), &#39;largestTriangleThreeBucketsMerge&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;Merge&#39;), &#39;cramersVBiasCorrectedMerge&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;Merge&#39;), &#39;quantilesExactMerge&#39;: (&#39;quantilesExact&#39;, &#39;Merge&#39;), &#39;groupArraySampleMerge&#39;: (&#39;groupArraySample&#39;, &#39;Merge&#39;), &#39;stddevPopMerge&#39;: (&#39;stddevPop&#39;, &#39;Merge&#39;), &#39;quantileTimingMerge&#39;: (&#39;quantileTiming&#39;, &#39;Merge&#39;), &#39;avgWeightedMerge&#39;: (&#39;avgWeighted&#39;, &#39;Merge&#39;), &#39;quantileBFloat16Merge&#39;: (&#39;quantileBFloat16&#39;, &#39;Merge&#39;), &#39;minMerge&#39;: (&#39;min&#39;, &#39;Merge&#39;), &#39;quantileGKMerge&#39;: (&#39;quantileGK&#39;, &#39;Merge&#39;), &#39;intervalLengthSumMerge&#39;: (&#39;intervalLengthSum&#39;, &#39;Merge&#39;), &#39;quantileInterpolatedWeightedMerge&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;Merge&#39;), &#39;quantileTDigestWeightedMerge&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;Merge&#39;), &#39;groupArrayMovingSumMerge&#39;: (&#39;groupArrayMovingSum&#39;, &#39;Merge&#39;), &#39;argMaxMerge&#39;: (&#39;argMax&#39;, &#39;Merge&#39;), &#39;medianMerge&#39;: (&#39;median&#39;, &#39;Merge&#39;), &#39;groupArrayMovingAvgMerge&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;Merge&#39;), &#39;groupBitmapXorMerge&#39;: (&#39;groupBitmapXor&#39;, &#39;Merge&#39;), &#39;uniqCombined64Merge&#39;: (&#39;uniqCombined64&#39;, &#39;Merge&#39;), &#39;quantilesDeterministicMerge&#39;: (&#39;quantilesDeterministic&#39;, &#39;Merge&#39;), &#39;cramersVMerge&#39;: (&#39;cramersV&#39;, &#39;Merge&#39;), &#39;groupBitmapMerge&#39;: (&#39;groupBitmap&#39;, &#39;Merge&#39;), &#39;sparkBarMerge&#39;: (&#39;sparkBar&#39;, &#39;Merge&#39;), &#39;topKMerge&#39;: (&#39;topK&#39;, &#39;Merge&#39;), &#39;groupBitAndMerge&#39;: (&#39;groupBitAnd&#39;, &#39;Merge&#39;), &#39;uniqExactMerge&#39;: (&#39;uniqExact&#39;, &#39;Merge&#39;), &#39;stddevSampMerge&#39;: (&#39;stddevSamp&#39;, &#39;Merge&#39;), &#39;first_valueMerge&#39;: (&#39;first_value&#39;, &#39;Merge&#39;), &#39;sumWithOverflowMerge&#39;: (&#39;sumWithOverflow&#39;, &#39;Merge&#39;), &#39;uniqUpToMerge&#39;: (&#39;uniqUpTo&#39;, &#39;Merge&#39;), &#39;quantilesExactHighMerge&#39;: (&#39;quantilesExactHigh&#39;, &#39;Merge&#39;), &#39;entropyMerge&#39;: (&#39;entropy&#39;, &#39;Merge&#39;), &#39;quantilesTDigestMerge&#39;: (&#39;quantilesTDigest&#39;, &#39;Merge&#39;), &#39;quantileTimingWeightedMerge&#39;: (&#39;quantileTimingWeighted&#39;, &#39;Merge&#39;), &#39;uniqMerge&#39;: (&#39;uniq&#39;, &#39;Merge&#39;), &#39;stochasticLogisticRegressionMerge&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;Merge&#39;), &#39;quantileMerge&#39;: (&#39;quantile&#39;, &#39;Merge&#39;), &#39;quantileBFloat16WeightedMerge&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;Merge&#39;), &#39;kurtPopMerge&#39;: (&#39;kurtPop&#39;, &#39;Merge&#39;), &#39;covarSampMerge&#39;: (&#39;covarSamp&#39;, &#39;Merge&#39;), &#39;anyLastMerge&#39;: (&#39;anyLast&#39;, &#39;Merge&#39;), &#39;uniqThetaMerge&#39;: (&#39;uniqTheta&#39;, &#39;Merge&#39;), &#39;covarPopMerge&#39;: (&#39;covarPop&#39;, &#39;Merge&#39;), &#39;uniqCombinedMerge&#39;: (&#39;uniqCombined&#39;, &#39;Merge&#39;), &#39;quantilesTDigestWeightedMerge&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;Merge&#39;), &#39;quantilesBFloat16Merge&#39;: (&#39;quantilesBFloat16&#39;, &#39;Merge&#39;), &#39;skewPopMerge&#39;: (&#39;skewPop&#39;, &#39;Merge&#39;), &#39;minMapMerge&#39;: (&#39;minMap&#39;, &#39;Merge&#39;), &#39;uniqHLL12Merge&#39;: (&#39;uniqHLL12&#39;, &#39;Merge&#39;), &#39;argMinMerge&#39;: (&#39;argMin&#39;, &#39;Merge&#39;), &#39;histogramMerge&#39;: (&#39;histogram&#39;, &#39;Merge&#39;), &#39;anyHeavyMerge&#39;: (&#39;anyHeavy&#39;, &#39;Merge&#39;), &#39;sequenceNextNodeMerge&#39;: (&#39;sequenceNextNode&#39;, &#39;Merge&#39;), &#39;theilsUMerge&#39;: (&#39;theilsU&#39;, &#39;Merge&#39;), &#39;groupBitOrMerge&#39;: (&#39;groupBitOr&#39;, &#39;Merge&#39;), &#39;mannWhitneyUTestMerge&#39;: (&#39;mannWhitneyUTest&#39;, &#39;Merge&#39;), &#39;anyMerge&#39;: (&#39;any&#39;, &#39;Merge&#39;), &#39;quantilesInterpolatedWeightedMerge&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;Merge&#39;), &#39;stochasticLinearRegressionMerge&#39;: (&#39;stochasticLinearRegression&#39;, &#39;Merge&#39;), &#39;studentTTestMerge&#39;: (&#39;studentTTest&#39;, &#39;Merge&#39;), &#39;skewSampMerge&#39;: (&#39;skewSamp&#39;, &#39;Merge&#39;), &#39;quantileExactWeightedMerge&#39;: (&#39;quantileExactWeighted&#39;, &#39;Merge&#39;), &#39;categoricalInformationValueMerge&#39;: (&#39;categoricalInformationValue&#39;, &#39;Merge&#39;), &#39;countMerge&#39;: (&#39;count&#39;, &#39;Merge&#39;), &#39;kurtSampMerge&#39;: (&#39;kurtSamp&#39;, &#39;Merge&#39;), &#39;quantileTDigestMerge&#39;: (&#39;quantileTDigest&#39;, &#39;Merge&#39;), &#39;avgMerge&#39;: (&#39;avg&#39;, &#39;Merge&#39;), &#39;quantilesExactLowMergeState&#39;: (&#39;quantilesExactLow&#39;, &#39;MergeState&#39;), &#39;contingencyMergeState&#39;: (&#39;contingency&#39;, &#39;MergeState&#39;), &#39;quantilesExactWeightedMergeState&#39;: (&#39;quantilesExactWeighted&#39;, &#39;MergeState&#39;), &#39;boundingRatioMergeState&#39;: (&#39;boundingRatio&#39;, &#39;MergeState&#39;), &#39;quantileExactLowMergeState&#39;: (&#39;quantileExactLow&#39;, &#39;MergeState&#39;), &#39;exponentialTimeDecayedAvgMergeState&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;MergeState&#39;), &#39;quantileDeterministicMergeState&#39;: (&#39;quantileDeterministic&#39;, &#39;MergeState&#39;), &#39;maxIntersectionsMergeState&#39;: (&#39;maxIntersections&#39;, &#39;MergeState&#39;), &#39;quantilesMergeState&#39;: (&#39;quantiles&#39;, &#39;MergeState&#39;), &#39;sequenceMatchMergeState&#39;: (&#39;sequenceMatch&#39;, &#39;MergeState&#39;), &#39;deltaSumTimestampMergeState&#39;: (&#39;deltaSumTimestamp&#39;, &#39;MergeState&#39;), &#39;groupBitmapAndMergeState&#39;: (&#39;groupBitmapAnd&#39;, &#39;MergeState&#39;), &#39;sumMergeState&#39;: (&#39;sum&#39;, &#39;MergeState&#39;), &#39;quantilesTimingMergeState&#39;: (&#39;quantilesTiming&#39;, &#39;MergeState&#39;), &#39;topKWeightedMergeState&#39;: (&#39;topKWeighted&#39;, &#39;MergeState&#39;), &#39;sumCountMergeState&#39;: (&#39;sumCount&#39;, &#39;MergeState&#39;), &#39;sequenceCountMergeState&#39;: (&#39;sequenceCount&#39;, &#39;MergeState&#39;), &#39;welchTTestMergeState&#39;: (&#39;welchTTest&#39;, &#39;MergeState&#39;), &#39;deltaSumMergeState&#39;: (&#39;deltaSum&#39;, &#39;MergeState&#39;), &#39;quantileExactMergeState&#39;: (&#39;quantileExact&#39;, &#39;MergeState&#39;), &#39;groupArrayMergeState&#39;: (&#39;groupArray&#39;, &#39;MergeState&#39;), &#39;groupBitmapOrMergeState&#39;: (&#39;groupBitmapOr&#39;, &#39;MergeState&#39;), &#39;maxIntersectionsPositionMergeState&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;MergeState&#39;), &#39;retentionMergeState&#39;: (&#39;retention&#39;, &#39;MergeState&#39;), &#39;kolmogorovSmirnovTestMergeState&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;MergeState&#39;), &#39;windowFunnelMergeState&#39;: (&#39;windowFunnel&#39;, &#39;MergeState&#39;), &#39;meanZTestMergeState&#39;: (&#39;meanZTest&#39;, &#39;MergeState&#39;), &#39;rankCorrMergeState&#39;: (&#39;rankCorr&#39;, &#39;MergeState&#39;), &#39;groupBitXorMergeState&#39;: (&#39;groupBitXor&#39;, &#39;MergeState&#39;), &#39;corrMergeState&#39;: (&#39;corr&#39;, &#39;MergeState&#39;), &#39;varPopMergeState&#39;: (&#39;varPop&#39;, &#39;MergeState&#39;), &#39;last_valueMergeState&#39;: (&#39;last_value&#39;, &#39;MergeState&#39;), &#39;sumKahanMergeState&#39;: (&#39;sumKahan&#39;, &#39;MergeState&#39;), &#39;simpleLinearRegressionMergeState&#39;: (&#39;simpleLinearRegression&#39;, &#39;MergeState&#39;), &#39;quantilesBFloat16WeightedMergeState&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;MergeState&#39;), &#39;varSampMergeState&#39;: (&#39;varSamp&#39;, &#39;MergeState&#39;), &#39;groupArrayLastMergeState&#39;: (&#39;groupArrayLast&#39;, &#39;MergeState&#39;), &#39;sumMapMergeState&#39;: (&#39;sumMap&#39;, &#39;MergeState&#39;), &#39;groupArrayInsertAtMergeState&#39;: (&#39;groupArrayInsertAt&#39;, &#39;MergeState&#39;), &#39;maxMapMergeState&#39;: (&#39;maxMap&#39;, &#39;MergeState&#39;), &#39;quantilesGKMergeState&#39;: (&#39;quantilesGK&#39;, &#39;MergeState&#39;), &#39;quantilesTimingWeightedMergeState&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;MergeState&#39;), &#39;groupUniqArrayMergeState&#39;: (&#39;groupUniqArray&#39;, &#39;MergeState&#39;), &#39;maxMergeState&#39;: (&#39;max&#39;, &#39;MergeState&#39;), &#39;exponentialMovingAverageMergeState&#39;: (&#39;exponentialMovingAverage&#39;, &#39;MergeState&#39;), &#39;quantileExactHighMergeState&#39;: (&#39;quantileExactHigh&#39;, &#39;MergeState&#39;), &#39;largestTriangleThreeBucketsMergeState&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;MergeState&#39;), &#39;cramersVBiasCorrectedMergeState&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;MergeState&#39;), &#39;quantilesExactMergeState&#39;: (&#39;quantilesExact&#39;, &#39;MergeState&#39;), &#39;groupArraySampleMergeState&#39;: (&#39;groupArraySample&#39;, &#39;MergeState&#39;), &#39;stddevPopMergeState&#39;: (&#39;stddevPop&#39;, &#39;MergeState&#39;), &#39;quantileTimingMergeState&#39;: (&#39;quantileTiming&#39;, &#39;MergeState&#39;), &#39;avgWeightedMergeState&#39;: (&#39;avgWeighted&#39;, &#39;MergeState&#39;), &#39;quantileBFloat16MergeState&#39;: (&#39;quantileBFloat16&#39;, &#39;MergeState&#39;), &#39;minMergeState&#39;: (&#39;min&#39;, &#39;MergeState&#39;), &#39;quantileGKMergeState&#39;: (&#39;quantileGK&#39;, &#39;MergeState&#39;), &#39;intervalLengthSumMergeState&#39;: (&#39;intervalLengthSum&#39;, &#39;MergeState&#39;), &#39;quantileInterpolatedWeightedMergeState&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;MergeState&#39;), &#39;quantileTDigestWeightedMergeState&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;MergeState&#39;), &#39;groupArrayMovingSumMergeState&#39;: (&#39;groupArrayMovingSum&#39;, &#39;MergeState&#39;), &#39;argMaxMergeState&#39;: (&#39;argMax&#39;, &#39;MergeState&#39;), &#39;medianMergeState&#39;: (&#39;median&#39;, &#39;MergeState&#39;), &#39;groupArrayMovingAvgMergeState&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;MergeState&#39;), &#39;groupBitmapXorMergeState&#39;: (&#39;groupBitmapXor&#39;, &#39;MergeState&#39;), &#39;uniqCombined64MergeState&#39;: (&#39;uniqCombined64&#39;, &#39;MergeState&#39;), &#39;quantilesDeterministicMergeState&#39;: (&#39;quantilesDeterministic&#39;, &#39;MergeState&#39;), &#39;cramersVMergeState&#39;: (&#39;cramersV&#39;, &#39;MergeState&#39;), &#39;groupBitmapMergeState&#39;: (&#39;groupBitmap&#39;, &#39;MergeState&#39;), &#39;sparkBarMergeState&#39;: (&#39;sparkBar&#39;, &#39;MergeState&#39;), &#39;topKMergeState&#39;: (&#39;topK&#39;, &#39;MergeState&#39;), &#39;groupBitAndMergeState&#39;: (&#39;groupBitAnd&#39;, &#39;MergeState&#39;), &#39;uniqExactMergeState&#39;: (&#39;uniqExact&#39;, &#39;MergeState&#39;), &#39;stddevSampMergeState&#39;: (&#39;stddevSamp&#39;, &#39;MergeState&#39;), &#39;first_valueMergeState&#39;: (&#39;first_value&#39;, &#39;MergeState&#39;), &#39;sumWithOverflowMergeState&#39;: (&#39;sumWithOverflow&#39;, &#39;MergeState&#39;), &#39;uniqUpToMergeState&#39;: (&#39;uniqUpTo&#39;, &#39;MergeState&#39;), &#39;quantilesExactHighMergeState&#39;: (&#39;quantilesExactHigh&#39;, &#39;MergeState&#39;), &#39;entropyMergeState&#39;: (&#39;entropy&#39;, &#39;MergeState&#39;), &#39;quantilesTDigestMergeState&#39;: (&#39;quantilesTDigest&#39;, &#39;MergeState&#39;), &#39;quantileTimingWeightedMergeState&#39;: (&#39;quantileTimingWeighted&#39;, &#39;MergeState&#39;), &#39;uniqMergeState&#39;: (&#39;uniq&#39;, &#39;MergeState&#39;), &#39;stochasticLogisticRegressionMergeState&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;MergeState&#39;), &#39;quantileMergeState&#39;: (&#39;quantile&#39;, &#39;MergeState&#39;), &#39;quantileBFloat16WeightedMergeState&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;MergeState&#39;), &#39;kurtPopMergeState&#39;: (&#39;kurtPop&#39;, &#39;MergeState&#39;), &#39;covarSampMergeState&#39;: (&#39;covarSamp&#39;, &#39;MergeState&#39;), &#39;anyLastMergeState&#39;: (&#39;anyLast&#39;, &#39;MergeState&#39;), &#39;uniqThetaMergeState&#39;: (&#39;uniqTheta&#39;, &#39;MergeState&#39;), &#39;covarPopMergeState&#39;: (&#39;covarPop&#39;, &#39;MergeState&#39;), &#39;uniqCombinedMergeState&#39;: (&#39;uniqCombined&#39;, &#39;MergeState&#39;), &#39;quantilesTDigestWeightedMergeState&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;MergeState&#39;), &#39;quantilesBFloat16MergeState&#39;: (&#39;quantilesBFloat16&#39;, &#39;MergeState&#39;), &#39;skewPopMergeState&#39;: (&#39;skewPop&#39;, &#39;MergeState&#39;), &#39;minMapMergeState&#39;: (&#39;minMap&#39;, &#39;MergeState&#39;), &#39;uniqHLL12MergeState&#39;: (&#39;uniqHLL12&#39;, &#39;MergeState&#39;), &#39;argMinMergeState&#39;: (&#39;argMin&#39;, &#39;MergeState&#39;), &#39;histogramMergeState&#39;: (&#39;histogram&#39;, &#39;MergeState&#39;), &#39;anyHeavyMergeState&#39;: (&#39;anyHeavy&#39;, &#39;MergeState&#39;), &#39;sequenceNextNodeMergeState&#39;: (&#39;sequenceNextNode&#39;, &#39;MergeState&#39;), &#39;theilsUMergeState&#39;: (&#39;theilsU&#39;, &#39;MergeState&#39;), &#39;groupBitOrMergeState&#39;: (&#39;groupBitOr&#39;, &#39;MergeState&#39;), &#39;mannWhitneyUTestMergeState&#39;: (&#39;mannWhitneyUTest&#39;, &#39;MergeState&#39;), &#39;anyMergeState&#39;: (&#39;any&#39;, &#39;MergeState&#39;), &#39;quantilesInterpolatedWeightedMergeState&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;MergeState&#39;), &#39;stochasticLinearRegressionMergeState&#39;: (&#39;stochasticLinearRegression&#39;, &#39;MergeState&#39;), &#39;studentTTestMergeState&#39;: (&#39;studentTTest&#39;, &#39;MergeState&#39;), &#39;skewSampMergeState&#39;: (&#39;skewSamp&#39;, &#39;MergeState&#39;), &#39;quantileExactWeightedMergeState&#39;: (&#39;quantileExactWeighted&#39;, &#39;MergeState&#39;), &#39;categoricalInformationValueMergeState&#39;: (&#39;categoricalInformationValue&#39;, &#39;MergeState&#39;), &#39;countMergeState&#39;: (&#39;count&#39;, &#39;MergeState&#39;), &#39;kurtSampMergeState&#39;: (&#39;kurtSamp&#39;, &#39;MergeState&#39;), &#39;quantileTDigestMergeState&#39;: (&#39;quantileTDigest&#39;, &#39;MergeState&#39;), &#39;avgMergeState&#39;: (&#39;avg&#39;, &#39;MergeState&#39;), &#39;quantilesExactLowForEach&#39;: (&#39;quantilesExactLow&#39;, &#39;ForEach&#39;), &#39;contingencyForEach&#39;: (&#39;contingency&#39;, &#39;ForEach&#39;), &#39;quantilesExactWeightedForEach&#39;: (&#39;quantilesExactWeighted&#39;, &#39;ForEach&#39;), &#39;boundingRatioForEach&#39;: (&#39;boundingRatio&#39;, &#39;ForEach&#39;), &#39;quantileExactLowForEach&#39;: (&#39;quantileExactLow&#39;, &#39;ForEach&#39;), &#39;exponentialTimeDecayedAvgForEach&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;ForEach&#39;), &#39;quantileDeterministicForEach&#39;: (&#39;quantileDeterministic&#39;, &#39;ForEach&#39;), &#39;maxIntersectionsForEach&#39;: (&#39;maxIntersections&#39;, &#39;ForEach&#39;), &#39;quantilesForEach&#39;: (&#39;quantiles&#39;, &#39;ForEach&#39;), &#39;sequenceMatchForEach&#39;: (&#39;sequenceMatch&#39;, &#39;ForEach&#39;), &#39;deltaSumTimestampForEach&#39;: (&#39;deltaSumTimestamp&#39;, &#39;ForEach&#39;), &#39;groupBitmapAndForEach&#39;: (&#39;groupBitmapAnd&#39;, &#39;ForEach&#39;), &#39;sumForEach&#39;: (&#39;sum&#39;, &#39;ForEach&#39;), &#39;quantilesTimingForEach&#39;: (&#39;quantilesTiming&#39;, &#39;ForEach&#39;), &#39;topKWeightedForEach&#39;: (&#39;topKWeighted&#39;, &#39;ForEach&#39;), &#39;sumCountForEach&#39;: (&#39;sumCount&#39;, &#39;ForEach&#39;), &#39;sequenceCountForEach&#39;: (&#39;sequenceCount&#39;, &#39;ForEach&#39;), &#39;welchTTestForEach&#39;: (&#39;welchTTest&#39;, &#39;ForEach&#39;), &#39;deltaSumForEach&#39;: (&#39;deltaSum&#39;, &#39;ForEach&#39;), &#39;quantileExactForEach&#39;: (&#39;quantileExact&#39;, &#39;ForEach&#39;), &#39;groupArrayForEach&#39;: (&#39;groupArray&#39;, &#39;ForEach&#39;), &#39;groupBitmapOrForEach&#39;: (&#39;groupBitmapOr&#39;, &#39;ForEach&#39;), &#39;maxIntersectionsPositionForEach&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;ForEach&#39;), &#39;retentionForEach&#39;: (&#39;retention&#39;, &#39;ForEach&#39;), &#39;kolmogorovSmirnovTestForEach&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;ForEach&#39;), &#39;windowFunnelForEach&#39;: (&#39;windowFunnel&#39;, &#39;ForEach&#39;), &#39;meanZTestForEach&#39;: (&#39;meanZTest&#39;, &#39;ForEach&#39;), &#39;rankCorrForEach&#39;: (&#39;rankCorr&#39;, &#39;ForEach&#39;), &#39;groupBitXorForEach&#39;: (&#39;groupBitXor&#39;, &#39;ForEach&#39;), &#39;corrForEach&#39;: (&#39;corr&#39;, &#39;ForEach&#39;), &#39;varPopForEach&#39;: (&#39;varPop&#39;, &#39;ForEach&#39;), &#39;last_valueForEach&#39;: (&#39;last_value&#39;, &#39;ForEach&#39;), &#39;sumKahanForEach&#39;: (&#39;sumKahan&#39;, &#39;ForEach&#39;), &#39;simpleLinearRegressionForEach&#39;: (&#39;simpleLinearRegression&#39;, &#39;ForEach&#39;), &#39;quantilesBFloat16WeightedForEach&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;ForEach&#39;), &#39;varSampForEach&#39;: (&#39;varSamp&#39;, &#39;ForEach&#39;), &#39;groupArrayLastForEach&#39;: (&#39;groupArrayLast&#39;, &#39;ForEach&#39;), &#39;sumMapForEach&#39;: (&#39;sumMap&#39;, &#39;ForEach&#39;), &#39;groupArrayInsertAtForEach&#39;: (&#39;groupArrayInsertAt&#39;, &#39;ForEach&#39;), &#39;maxMapForEach&#39;: (&#39;maxMap&#39;, &#39;ForEach&#39;), &#39;quantilesGKForEach&#39;: (&#39;quantilesGK&#39;, &#39;ForEach&#39;), &#39;quantilesTimingWeightedForEach&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;ForEach&#39;), &#39;groupUniqArrayForEach&#39;: (&#39;groupUniqArray&#39;, &#39;ForEach&#39;), &#39;maxForEach&#39;: (&#39;max&#39;, &#39;ForEach&#39;), &#39;exponentialMovingAverageForEach&#39;: (&#39;exponentialMovingAverage&#39;, &#39;ForEach&#39;), &#39;quantileExactHighForEach&#39;: (&#39;quantileExactHigh&#39;, &#39;ForEach&#39;), &#39;largestTriangleThreeBucketsForEach&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;ForEach&#39;), &#39;cramersVBiasCorrectedForEach&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;ForEach&#39;), &#39;quantilesExactForEach&#39;: (&#39;quantilesExact&#39;, &#39;ForEach&#39;), &#39;groupArraySampleForEach&#39;: (&#39;groupArraySample&#39;, &#39;ForEach&#39;), &#39;stddevPopForEach&#39;: (&#39;stddevPop&#39;, &#39;ForEach&#39;), &#39;quantileTimingForEach&#39;: (&#39;quantileTiming&#39;, &#39;ForEach&#39;), &#39;avgWeightedForEach&#39;: (&#39;avgWeighted&#39;, &#39;ForEach&#39;), &#39;quantileBFloat16ForEach&#39;: (&#39;quantileBFloat16&#39;, &#39;ForEach&#39;), &#39;minForEach&#39;: (&#39;min&#39;, &#39;ForEach&#39;), &#39;quantileGKForEach&#39;: (&#39;quantileGK&#39;, &#39;ForEach&#39;), &#39;intervalLengthSumForEach&#39;: (&#39;intervalLengthSum&#39;, &#39;ForEach&#39;), &#39;quantileInterpolatedWeightedForEach&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;ForEach&#39;), &#39;quantileTDigestWeightedForEach&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;ForEach&#39;), &#39;groupArrayMovingSumForEach&#39;: (&#39;groupArrayMovingSum&#39;, &#39;ForEach&#39;), &#39;argMaxForEach&#39;: (&#39;argMax&#39;, &#39;ForEach&#39;), &#39;medianForEach&#39;: (&#39;median&#39;, &#39;ForEach&#39;), &#39;groupArrayMovingAvgForEach&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;ForEach&#39;), &#39;groupBitmapXorForEach&#39;: (&#39;groupBitmapXor&#39;, &#39;ForEach&#39;), &#39;uniqCombined64ForEach&#39;: (&#39;uniqCombined64&#39;, &#39;ForEach&#39;), &#39;quantilesDeterministicForEach&#39;: (&#39;quantilesDeterministic&#39;, &#39;ForEach&#39;), &#39;cramersVForEach&#39;: (&#39;cramersV&#39;, &#39;ForEach&#39;), &#39;groupBitmapForEach&#39;: (&#39;groupBitmap&#39;, &#39;ForEach&#39;), &#39;sparkBarForEach&#39;: (&#39;sparkBar&#39;, &#39;ForEach&#39;), &#39;topKForEach&#39;: (&#39;topK&#39;, &#39;ForEach&#39;), &#39;groupBitAndForEach&#39;: (&#39;groupBitAnd&#39;, &#39;ForEach&#39;), &#39;uniqExactForEach&#39;: (&#39;uniqExact&#39;, &#39;ForEach&#39;), &#39;stddevSampForEach&#39;: (&#39;stddevSamp&#39;, &#39;ForEach&#39;), &#39;first_valueForEach&#39;: (&#39;first_value&#39;, &#39;ForEach&#39;), &#39;sumWithOverflowForEach&#39;: (&#39;sumWithOverflow&#39;, &#39;ForEach&#39;), &#39;uniqUpToForEach&#39;: (&#39;uniqUpTo&#39;, &#39;ForEach&#39;), &#39;quantilesExactHighForEach&#39;: (&#39;quantilesExactHigh&#39;, &#39;ForEach&#39;), &#39;entropyForEach&#39;: (&#39;entropy&#39;, &#39;ForEach&#39;), &#39;quantilesTDigestForEach&#39;: (&#39;quantilesTDigest&#39;, &#39;ForEach&#39;), &#39;quantileTimingWeightedForEach&#39;: (&#39;quantileTimingWeighted&#39;, &#39;ForEach&#39;), &#39;uniqForEach&#39;: (&#39;uniq&#39;, &#39;ForEach&#39;), &#39;stochasticLogisticRegressionForEach&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;ForEach&#39;), &#39;quantileForEach&#39;: (&#39;quantile&#39;, &#39;ForEach&#39;), &#39;quantileBFloat16WeightedForEach&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;ForEach&#39;), &#39;kurtPopForEach&#39;: (&#39;kurtPop&#39;, &#39;ForEach&#39;), &#39;covarSampForEach&#39;: (&#39;covarSamp&#39;, &#39;ForEach&#39;), &#39;anyLastForEach&#39;: (&#39;anyLast&#39;, &#39;ForEach&#39;), &#39;uniqThetaForEach&#39;: (&#39;uniqTheta&#39;, &#39;ForEach&#39;), &#39;covarPopForEach&#39;: (&#39;covarPop&#39;, &#39;ForEach&#39;), &#39;uniqCombinedForEach&#39;: (&#39;uniqCombined&#39;, &#39;ForEach&#39;), &#39;quantilesTDigestWeightedForEach&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;ForEach&#39;), &#39;quantilesBFloat16ForEach&#39;: (&#39;quantilesBFloat16&#39;, &#39;ForEach&#39;), &#39;skewPopForEach&#39;: (&#39;skewPop&#39;, &#39;ForEach&#39;), &#39;minMapForEach&#39;: (&#39;minMap&#39;, &#39;ForEach&#39;), &#39;uniqHLL12ForEach&#39;: (&#39;uniqHLL12&#39;, &#39;ForEach&#39;), &#39;argMinForEach&#39;: (&#39;argMin&#39;, &#39;ForEach&#39;), &#39;histogramForEach&#39;: (&#39;histogram&#39;, &#39;ForEach&#39;), &#39;anyHeavyForEach&#39;: (&#39;anyHeavy&#39;, &#39;ForEach&#39;), &#39;sequenceNextNodeForEach&#39;: (&#39;sequenceNextNode&#39;, &#39;ForEach&#39;), &#39;theilsUForEach&#39;: (&#39;theilsU&#39;, &#39;ForEach&#39;), &#39;groupBitOrForEach&#39;: (&#39;groupBitOr&#39;, &#39;ForEach&#39;), &#39;mannWhitneyUTestForEach&#39;: (&#39;mannWhitneyUTest&#39;, &#39;ForEach&#39;), &#39;anyForEach&#39;: (&#39;any&#39;, &#39;ForEach&#39;), &#39;quantilesInterpolatedWeightedForEach&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;ForEach&#39;), &#39;stochasticLinearRegressionForEach&#39;: (&#39;stochasticLinearRegression&#39;, &#39;ForEach&#39;), &#39;studentTTestForEach&#39;: (&#39;studentTTest&#39;, &#39;ForEach&#39;), &#39;skewSampForEach&#39;: (&#39;skewSamp&#39;, &#39;ForEach&#39;), &#39;quantileExactWeightedForEach&#39;: (&#39;quantileExactWeighted&#39;, &#39;ForEach&#39;), &#39;categoricalInformationValueForEach&#39;: (&#39;categoricalInformationValue&#39;, &#39;ForEach&#39;), &#39;countForEach&#39;: (&#39;count&#39;, &#39;ForEach&#39;), &#39;kurtSampForEach&#39;: (&#39;kurtSamp&#39;, &#39;ForEach&#39;), &#39;quantileTDigestForEach&#39;: (&#39;quantileTDigest&#39;, &#39;ForEach&#39;), &#39;avgForEach&#39;: (&#39;avg&#39;, &#39;ForEach&#39;), &#39;quantilesExactLowDistinct&#39;: (&#39;quantilesExactLow&#39;, &#39;Distinct&#39;), &#39;contingencyDistinct&#39;: (&#39;contingency&#39;, &#39;Distinct&#39;), &#39;quantilesExactWeightedDistinct&#39;: (&#39;quantilesExactWeighted&#39;, &#39;Distinct&#39;), &#39;boundingRatioDistinct&#39;: (&#39;boundingRatio&#39;, &#39;Distinct&#39;), &#39;quantileExactLowDistinct&#39;: (&#39;quantileExactLow&#39;, &#39;Distinct&#39;), &#39;exponentialTimeDecayedAvgDistinct&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;Distinct&#39;), &#39;quantileDeterministicDistinct&#39;: (&#39;quantileDeterministic&#39;, &#39;Distinct&#39;), &#39;maxIntersectionsDistinct&#39;: (&#39;maxIntersections&#39;, &#39;Distinct&#39;), &#39;quantilesDistinct&#39;: (&#39;quantiles&#39;, &#39;Distinct&#39;), &#39;sequenceMatchDistinct&#39;: (&#39;sequenceMatch&#39;, &#39;Distinct&#39;), &#39;deltaSumTimestampDistinct&#39;: (&#39;deltaSumTimestamp&#39;, &#39;Distinct&#39;), &#39;groupBitmapAndDistinct&#39;: (&#39;groupBitmapAnd&#39;, &#39;Distinct&#39;), &#39;sumDistinct&#39;: (&#39;sum&#39;, &#39;Distinct&#39;), &#39;quantilesTimingDistinct&#39;: (&#39;quantilesTiming&#39;, &#39;Distinct&#39;), &#39;topKWeightedDistinct&#39;: (&#39;topKWeighted&#39;, &#39;Distinct&#39;), &#39;sumCountDistinct&#39;: (&#39;sumCount&#39;, &#39;Distinct&#39;), &#39;sequenceCountDistinct&#39;: (&#39;sequenceCount&#39;, &#39;Distinct&#39;), &#39;welchTTestDistinct&#39;: (&#39;welchTTest&#39;, &#39;Distinct&#39;), &#39;deltaSumDistinct&#39;: (&#39;deltaSum&#39;, &#39;Distinct&#39;), &#39;quantileExactDistinct&#39;: (&#39;quantileExact&#39;, &#39;Distinct&#39;), &#39;groupArrayDistinct&#39;: (&#39;groupArray&#39;, &#39;Distinct&#39;), &#39;groupBitmapOrDistinct&#39;: (&#39;groupBitmapOr&#39;, &#39;Distinct&#39;), &#39;maxIntersectionsPositionDistinct&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;Distinct&#39;), &#39;retentionDistinct&#39;: (&#39;retention&#39;, &#39;Distinct&#39;), &#39;kolmogorovSmirnovTestDistinct&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;Distinct&#39;), &#39;windowFunnelDistinct&#39;: (&#39;windowFunnel&#39;, &#39;Distinct&#39;), &#39;meanZTestDistinct&#39;: (&#39;meanZTest&#39;, &#39;Distinct&#39;), &#39;rankCorrDistinct&#39;: (&#39;rankCorr&#39;, &#39;Distinct&#39;), &#39;groupBitXorDistinct&#39;: (&#39;groupBitXor&#39;, &#39;Distinct&#39;), &#39;corrDistinct&#39;: (&#39;corr&#39;, &#39;Distinct&#39;), &#39;varPopDistinct&#39;: (&#39;varPop&#39;, &#39;Distinct&#39;), &#39;last_valueDistinct&#39;: (&#39;last_value&#39;, &#39;Distinct&#39;), &#39;sumKahanDistinct&#39;: (&#39;sumKahan&#39;, &#39;Distinct&#39;), &#39;simpleLinearRegressionDistinct&#39;: (&#39;simpleLinearRegression&#39;, &#39;Distinct&#39;), &#39;quantilesBFloat16WeightedDistinct&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;Distinct&#39;), &#39;varSampDistinct&#39;: (&#39;varSamp&#39;, &#39;Distinct&#39;), &#39;groupArrayLastDistinct&#39;: (&#39;groupArrayLast&#39;, &#39;Distinct&#39;), &#39;sumMapDistinct&#39;: (&#39;sumMap&#39;, &#39;Distinct&#39;), &#39;groupArrayInsertAtDistinct&#39;: (&#39;groupArrayInsertAt&#39;, &#39;Distinct&#39;), &#39;maxMapDistinct&#39;: (&#39;maxMap&#39;, &#39;Distinct&#39;), &#39;quantilesGKDistinct&#39;: (&#39;quantilesGK&#39;, &#39;Distinct&#39;), &#39;quantilesTimingWeightedDistinct&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;Distinct&#39;), &#39;groupUniqArrayDistinct&#39;: (&#39;groupUniqArray&#39;, &#39;Distinct&#39;), &#39;maxDistinct&#39;: (&#39;max&#39;, &#39;Distinct&#39;), &#39;exponentialMovingAverageDistinct&#39;: (&#39;exponentialMovingAverage&#39;, &#39;Distinct&#39;), &#39;quantileExactHighDistinct&#39;: (&#39;quantileExactHigh&#39;, &#39;Distinct&#39;), &#39;largestTriangleThreeBucketsDistinct&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;Distinct&#39;), &#39;cramersVBiasCorrectedDistinct&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;Distinct&#39;), &#39;quantilesExactDistinct&#39;: (&#39;quantilesExact&#39;, &#39;Distinct&#39;), &#39;groupArraySampleDistinct&#39;: (&#39;groupArraySample&#39;, &#39;Distinct&#39;), &#39;stddevPopDistinct&#39;: (&#39;stddevPop&#39;, &#39;Distinct&#39;), &#39;quantileTimingDistinct&#39;: (&#39;quantileTiming&#39;, &#39;Distinct&#39;), &#39;avgWeightedDistinct&#39;: (&#39;avgWeighted&#39;, &#39;Distinct&#39;), &#39;quantileBFloat16Distinct&#39;: (&#39;quantileBFloat16&#39;, &#39;Distinct&#39;), &#39;minDistinct&#39;: (&#39;min&#39;, &#39;Distinct&#39;), &#39;quantileGKDistinct&#39;: (&#39;quantileGK&#39;, &#39;Distinct&#39;), &#39;intervalLengthSumDistinct&#39;: (&#39;intervalLengthSum&#39;, &#39;Distinct&#39;), &#39;quantileInterpolatedWeightedDistinct&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;Distinct&#39;), &#39;quantileTDigestWeightedDistinct&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;Distinct&#39;), &#39;groupArrayMovingSumDistinct&#39;: (&#39;groupArrayMovingSum&#39;, &#39;Distinct&#39;), &#39;argMaxDistinct&#39;: (&#39;argMax&#39;, &#39;Distinct&#39;), &#39;medianDistinct&#39;: (&#39;median&#39;, &#39;Distinct&#39;), &#39;groupArrayMovingAvgDistinct&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;Distinct&#39;), &#39;groupBitmapXorDistinct&#39;: (&#39;groupBitmapXor&#39;, &#39;Distinct&#39;), &#39;uniqCombined64Distinct&#39;: (&#39;uniqCombined64&#39;, &#39;Distinct&#39;), &#39;quantilesDeterministicDistinct&#39;: (&#39;quantilesDeterministic&#39;, &#39;Distinct&#39;), &#39;cramersVDistinct&#39;: (&#39;cramersV&#39;, &#39;Distinct&#39;), &#39;groupBitmapDistinct&#39;: (&#39;groupBitmap&#39;, &#39;Distinct&#39;), &#39;sparkBarDistinct&#39;: (&#39;sparkBar&#39;, &#39;Distinct&#39;), &#39;topKDistinct&#39;: (&#39;topK&#39;, &#39;Distinct&#39;), &#39;groupBitAndDistinct&#39;: (&#39;groupBitAnd&#39;, &#39;Distinct&#39;), &#39;uniqExactDistinct&#39;: (&#39;uniqExact&#39;, &#39;Distinct&#39;), &#39;stddevSampDistinct&#39;: (&#39;stddevSamp&#39;, &#39;Distinct&#39;), &#39;first_valueDistinct&#39;: (&#39;first_value&#39;, &#39;Distinct&#39;), &#39;sumWithOverflowDistinct&#39;: (&#39;sumWithOverflow&#39;, &#39;Distinct&#39;), &#39;uniqUpToDistinct&#39;: (&#39;uniqUpTo&#39;, &#39;Distinct&#39;), &#39;quantilesExactHighDistinct&#39;: (&#39;quantilesExactHigh&#39;, &#39;Distinct&#39;), &#39;entropyDistinct&#39;: (&#39;entropy&#39;, &#39;Distinct&#39;), &#39;quantilesTDigestDistinct&#39;: (&#39;quantilesTDigest&#39;, &#39;Distinct&#39;), &#39;quantileTimingWeightedDistinct&#39;: (&#39;quantileTimingWeighted&#39;, &#39;Distinct&#39;), &#39;uniqDistinct&#39;: (&#39;uniq&#39;, &#39;Distinct&#39;), &#39;stochasticLogisticRegressionDistinct&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;Distinct&#39;), &#39;quantileDistinct&#39;: (&#39;quantile&#39;, &#39;Distinct&#39;), &#39;quantileBFloat16WeightedDistinct&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;Distinct&#39;), &#39;kurtPopDistinct&#39;: (&#39;kurtPop&#39;, &#39;Distinct&#39;), &#39;covarSampDistinct&#39;: (&#39;covarSamp&#39;, &#39;Distinct&#39;), &#39;anyLastDistinct&#39;: (&#39;anyLast&#39;, &#39;Distinct&#39;), &#39;uniqThetaDistinct&#39;: (&#39;uniqTheta&#39;, &#39;Distinct&#39;), &#39;covarPopDistinct&#39;: (&#39;covarPop&#39;, &#39;Distinct&#39;), &#39;uniqCombinedDistinct&#39;: (&#39;uniqCombined&#39;, &#39;Distinct&#39;), &#39;quantilesTDigestWeightedDistinct&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;Distinct&#39;), &#39;quantilesBFloat16Distinct&#39;: (&#39;quantilesBFloat16&#39;, &#39;Distinct&#39;), &#39;skewPopDistinct&#39;: (&#39;skewPop&#39;, &#39;Distinct&#39;), &#39;minMapDistinct&#39;: (&#39;minMap&#39;, &#39;Distinct&#39;), &#39;uniqHLL12Distinct&#39;: (&#39;uniqHLL12&#39;, &#39;Distinct&#39;), &#39;argMinDistinct&#39;: (&#39;argMin&#39;, &#39;Distinct&#39;), &#39;histogramDistinct&#39;: (&#39;histogram&#39;, &#39;Distinct&#39;), &#39;anyHeavyDistinct&#39;: (&#39;anyHeavy&#39;, &#39;Distinct&#39;), &#39;sequenceNextNodeDistinct&#39;: (&#39;sequenceNextNode&#39;, &#39;Distinct&#39;), &#39;theilsUDistinct&#39;: (&#39;theilsU&#39;, &#39;Distinct&#39;), &#39;groupBitOrDistinct&#39;: (&#39;groupBitOr&#39;, &#39;Distinct&#39;), &#39;mannWhitneyUTestDistinct&#39;: (&#39;mannWhitneyUTest&#39;, &#39;Distinct&#39;), &#39;anyDistinct&#39;: (&#39;any&#39;, &#39;Distinct&#39;), &#39;quantilesInterpolatedWeightedDistinct&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;Distinct&#39;), &#39;stochasticLinearRegressionDistinct&#39;: (&#39;stochasticLinearRegression&#39;, &#39;Distinct&#39;), &#39;studentTTestDistinct&#39;: (&#39;studentTTest&#39;, &#39;Distinct&#39;), &#39;skewSampDistinct&#39;: (&#39;skewSamp&#39;, &#39;Distinct&#39;), &#39;quantileExactWeightedDistinct&#39;: (&#39;quantileExactWeighted&#39;, &#39;Distinct&#39;), &#39;categoricalInformationValueDistinct&#39;: (&#39;categoricalInformationValue&#39;, &#39;Distinct&#39;), &#39;countDistinct&#39;: (&#39;count&#39;, &#39;Distinct&#39;), &#39;kurtSampDistinct&#39;: (&#39;kurtSamp&#39;, &#39;Distinct&#39;), &#39;quantileTDigestDistinct&#39;: (&#39;quantileTDigest&#39;, &#39;Distinct&#39;), &#39;avgDistinct&#39;: (&#39;avg&#39;, &#39;Distinct&#39;), &#39;quantilesExactLowOrDefault&#39;: (&#39;quantilesExactLow&#39;, &#39;OrDefault&#39;), &#39;contingencyOrDefault&#39;: (&#39;contingency&#39;, &#39;OrDefault&#39;), &#39;quantilesExactWeightedOrDefault&#39;: (&#39;quantilesExactWeighted&#39;, &#39;OrDefault&#39;), &#39;boundingRatioOrDefault&#39;: (&#39;boundingRatio&#39;, &#39;OrDefault&#39;), &#39;quantileExactLowOrDefault&#39;: (&#39;quantileExactLow&#39;, &#39;OrDefault&#39;), &#39;exponentialTimeDecayedAvgOrDefault&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;OrDefault&#39;), &#39;quantileDeterministicOrDefault&#39;: (&#39;quantileDeterministic&#39;, &#39;OrDefault&#39;), &#39;maxIntersectionsOrDefault&#39;: (&#39;maxIntersections&#39;, &#39;OrDefault&#39;), &#39;quantilesOrDefault&#39;: (&#39;quantiles&#39;, &#39;OrDefault&#39;), &#39;sequenceMatchOrDefault&#39;: (&#39;sequenceMatch&#39;, &#39;OrDefault&#39;), &#39;deltaSumTimestampOrDefault&#39;: (&#39;deltaSumTimestamp&#39;, &#39;OrDefault&#39;), &#39;groupBitmapAndOrDefault&#39;: (&#39;groupBitmapAnd&#39;, &#39;OrDefault&#39;), &#39;sumOrDefault&#39;: (&#39;sum&#39;, &#39;OrDefault&#39;), &#39;quantilesTimingOrDefault&#39;: (&#39;quantilesTiming&#39;, &#39;OrDefault&#39;), &#39;topKWeightedOrDefault&#39;: (&#39;topKWeighted&#39;, &#39;OrDefault&#39;), &#39;sumCountOrDefault&#39;: (&#39;sumCount&#39;, &#39;OrDefault&#39;), &#39;sequenceCountOrDefault&#39;: (&#39;sequenceCount&#39;, &#39;OrDefault&#39;), &#39;welchTTestOrDefault&#39;: (&#39;welchTTest&#39;, &#39;OrDefault&#39;), &#39;deltaSumOrDefault&#39;: (&#39;deltaSum&#39;, &#39;OrDefault&#39;), &#39;quantileExactOrDefault&#39;: (&#39;quantileExact&#39;, &#39;OrDefault&#39;), &#39;groupArrayOrDefault&#39;: (&#39;groupArray&#39;, &#39;OrDefault&#39;), &#39;groupBitmapOrOrDefault&#39;: (&#39;groupBitmapOr&#39;, &#39;OrDefault&#39;), &#39;maxIntersectionsPositionOrDefault&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;OrDefault&#39;), &#39;retentionOrDefault&#39;: (&#39;retention&#39;, &#39;OrDefault&#39;), &#39;kolmogorovSmirnovTestOrDefault&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;OrDefault&#39;), &#39;windowFunnelOrDefault&#39;: (&#39;windowFunnel&#39;, &#39;OrDefault&#39;), &#39;meanZTestOrDefault&#39;: (&#39;meanZTest&#39;, &#39;OrDefault&#39;), &#39;rankCorrOrDefault&#39;: (&#39;rankCorr&#39;, &#39;OrDefault&#39;), &#39;groupBitXorOrDefault&#39;: (&#39;groupBitXor&#39;, &#39;OrDefault&#39;), &#39;corrOrDefault&#39;: (&#39;corr&#39;, &#39;OrDefault&#39;), &#39;varPopOrDefault&#39;: (&#39;varPop&#39;, &#39;OrDefault&#39;), &#39;last_valueOrDefault&#39;: (&#39;last_value&#39;, &#39;OrDefault&#39;), &#39;sumKahanOrDefault&#39;: (&#39;sumKahan&#39;, &#39;OrDefault&#39;), &#39;simpleLinearRegressionOrDefault&#39;: (&#39;simpleLinearRegression&#39;, &#39;OrDefault&#39;), &#39;quantilesBFloat16WeightedOrDefault&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;OrDefault&#39;), &#39;varSampOrDefault&#39;: (&#39;varSamp&#39;, &#39;OrDefault&#39;), &#39;groupArrayLastOrDefault&#39;: (&#39;groupArrayLast&#39;, &#39;OrDefault&#39;), &#39;sumMapOrDefault&#39;: (&#39;sumMap&#39;, &#39;OrDefault&#39;), &#39;groupArrayInsertAtOrDefault&#39;: (&#39;groupArrayInsertAt&#39;, &#39;OrDefault&#39;), &#39;maxMapOrDefault&#39;: (&#39;maxMap&#39;, &#39;OrDefault&#39;), &#39;quantilesGKOrDefault&#39;: (&#39;quantilesGK&#39;, &#39;OrDefault&#39;), &#39;quantilesTimingWeightedOrDefault&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;OrDefault&#39;), &#39;groupUniqArrayOrDefault&#39;: (&#39;groupUniqArray&#39;, &#39;OrDefault&#39;), &#39;maxOrDefault&#39;: (&#39;max&#39;, &#39;OrDefault&#39;), &#39;exponentialMovingAverageOrDefault&#39;: (&#39;exponentialMovingAverage&#39;, &#39;OrDefault&#39;), &#39;quantileExactHighOrDefault&#39;: (&#39;quantileExactHigh&#39;, &#39;OrDefault&#39;), &#39;largestTriangleThreeBucketsOrDefault&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;OrDefault&#39;), &#39;cramersVBiasCorrectedOrDefault&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;OrDefault&#39;), &#39;quantilesExactOrDefault&#39;: (&#39;quantilesExact&#39;, &#39;OrDefault&#39;), &#39;groupArraySampleOrDefault&#39;: (&#39;groupArraySample&#39;, &#39;OrDefault&#39;), &#39;stddevPopOrDefault&#39;: (&#39;stddevPop&#39;, &#39;OrDefault&#39;), &#39;quantileTimingOrDefault&#39;: (&#39;quantileTiming&#39;, &#39;OrDefault&#39;), &#39;avgWeightedOrDefault&#39;: (&#39;avgWeighted&#39;, &#39;OrDefault&#39;), &#39;quantileBFloat16OrDefault&#39;: (&#39;quantileBFloat16&#39;, &#39;OrDefault&#39;), &#39;minOrDefault&#39;: (&#39;min&#39;, &#39;OrDefault&#39;), &#39;quantileGKOrDefault&#39;: (&#39;quantileGK&#39;, &#39;OrDefault&#39;), &#39;intervalLengthSumOrDefault&#39;: (&#39;intervalLengthSum&#39;, &#39;OrDefault&#39;), &#39;quantileInterpolatedWeightedOrDefault&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;OrDefault&#39;), &#39;quantileTDigestWeightedOrDefault&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;OrDefault&#39;), &#39;groupArrayMovingSumOrDefault&#39;: (&#39;groupArrayMovingSum&#39;, &#39;OrDefault&#39;), &#39;argMaxOrDefault&#39;: (&#39;argMax&#39;, &#39;OrDefault&#39;), &#39;medianOrDefault&#39;: (&#39;median&#39;, &#39;OrDefault&#39;), &#39;groupArrayMovingAvgOrDefault&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;OrDefault&#39;), &#39;groupBitmapXorOrDefault&#39;: (&#39;groupBitmapXor&#39;, &#39;OrDefault&#39;), &#39;uniqCombined64OrDefault&#39;: (&#39;uniqCombined64&#39;, &#39;OrDefault&#39;), &#39;quantilesDeterministicOrDefault&#39;: (&#39;quantilesDeterministic&#39;, &#39;OrDefault&#39;), &#39;cramersVOrDefault&#39;: (&#39;cramersV&#39;, &#39;OrDefault&#39;), &#39;groupBitmapOrDefault&#39;: (&#39;groupBitmap&#39;, &#39;OrDefault&#39;), &#39;sparkBarOrDefault&#39;: (&#39;sparkBar&#39;, &#39;OrDefault&#39;), &#39;topKOrDefault&#39;: (&#39;topK&#39;, &#39;OrDefault&#39;), &#39;groupBitAndOrDefault&#39;: (&#39;groupBitAnd&#39;, &#39;OrDefault&#39;), &#39;uniqExactOrDefault&#39;: (&#39;uniqExact&#39;, &#39;OrDefault&#39;), &#39;stddevSampOrDefault&#39;: (&#39;stddevSamp&#39;, &#39;OrDefault&#39;), &#39;first_valueOrDefault&#39;: (&#39;first_value&#39;, &#39;OrDefault&#39;), &#39;sumWithOverflowOrDefault&#39;: (&#39;sumWithOverflow&#39;, &#39;OrDefault&#39;), &#39;uniqUpToOrDefault&#39;: (&#39;uniqUpTo&#39;, &#39;OrDefault&#39;), &#39;quantilesExactHighOrDefault&#39;: (&#39;quantilesExactHigh&#39;, &#39;OrDefault&#39;), &#39;entropyOrDefault&#39;: (&#39;entropy&#39;, &#39;OrDefault&#39;), &#39;quantilesTDigestOrDefault&#39;: (&#39;quantilesTDigest&#39;, &#39;OrDefault&#39;), &#39;quantileTimingWeightedOrDefault&#39;: (&#39;quantileTimingWeighted&#39;, &#39;OrDefault&#39;), &#39;uniqOrDefault&#39;: (&#39;uniq&#39;, &#39;OrDefault&#39;), &#39;stochasticLogisticRegressionOrDefault&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;OrDefault&#39;), &#39;quantileOrDefault&#39;: (&#39;quantile&#39;, &#39;OrDefault&#39;), &#39;quantileBFloat16WeightedOrDefault&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;OrDefault&#39;), &#39;kurtPopOrDefault&#39;: (&#39;kurtPop&#39;, &#39;OrDefault&#39;), &#39;covarSampOrDefault&#39;: (&#39;covarSamp&#39;, &#39;OrDefault&#39;), &#39;anyLastOrDefault&#39;: (&#39;anyLast&#39;, &#39;OrDefault&#39;), &#39;uniqThetaOrDefault&#39;: (&#39;uniqTheta&#39;, &#39;OrDefault&#39;), &#39;covarPopOrDefault&#39;: (&#39;covarPop&#39;, &#39;OrDefault&#39;), &#39;uniqCombinedOrDefault&#39;: (&#39;uniqCombined&#39;, &#39;OrDefault&#39;), &#39;quantilesTDigestWeightedOrDefault&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;OrDefault&#39;), &#39;quantilesBFloat16OrDefault&#39;: (&#39;quantilesBFloat16&#39;, &#39;OrDefault&#39;), &#39;skewPopOrDefault&#39;: (&#39;skewPop&#39;, &#39;OrDefault&#39;), &#39;minMapOrDefault&#39;: (&#39;minMap&#39;, &#39;OrDefault&#39;), &#39;uniqHLL12OrDefault&#39;: (&#39;uniqHLL12&#39;, &#39;OrDefault&#39;), &#39;argMinOrDefault&#39;: (&#39;argMin&#39;, &#39;OrDefault&#39;), &#39;histogramOrDefault&#39;: (&#39;histogram&#39;, &#39;OrDefault&#39;), &#39;anyHeavyOrDefault&#39;: (&#39;anyHeavy&#39;, &#39;OrDefault&#39;), &#39;sequenceNextNodeOrDefault&#39;: (&#39;sequenceNextNode&#39;, &#39;OrDefault&#39;), &#39;theilsUOrDefault&#39;: (&#39;theilsU&#39;, &#39;OrDefault&#39;), &#39;groupBitOrOrDefault&#39;: (&#39;groupBitOr&#39;, &#39;OrDefault&#39;), &#39;mannWhitneyUTestOrDefault&#39;: (&#39;mannWhitneyUTest&#39;, &#39;OrDefault&#39;), &#39;anyOrDefault&#39;: (&#39;any&#39;, &#39;OrDefault&#39;), &#39;quantilesInterpolatedWeightedOrDefault&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;OrDefault&#39;), &#39;stochasticLinearRegressionOrDefault&#39;: (&#39;stochasticLinearRegression&#39;, &#39;OrDefault&#39;), &#39;studentTTestOrDefault&#39;: (&#39;studentTTest&#39;, &#39;OrDefault&#39;), &#39;skewSampOrDefault&#39;: (&#39;skewSamp&#39;, &#39;OrDefault&#39;), &#39;quantileExactWeightedOrDefault&#39;: (&#39;quantileExactWeighted&#39;, &#39;OrDefault&#39;), &#39;categoricalInformationValueOrDefault&#39;: (&#39;categoricalInformationValue&#39;, &#39;OrDefault&#39;), &#39;countOrDefault&#39;: (&#39;count&#39;, &#39;OrDefault&#39;), &#39;kurtSampOrDefault&#39;: (&#39;kurtSamp&#39;, &#39;OrDefault&#39;), &#39;quantileTDigestOrDefault&#39;: (&#39;quantileTDigest&#39;, &#39;OrDefault&#39;), &#39;avgOrDefault&#39;: (&#39;avg&#39;, &#39;OrDefault&#39;), &#39;quantilesExactLowOrNull&#39;: (&#39;quantilesExactLow&#39;, &#39;OrNull&#39;), &#39;contingencyOrNull&#39;: (&#39;contingency&#39;, &#39;OrNull&#39;), &#39;quantilesExactWeightedOrNull&#39;: (&#39;quantilesExactWeighted&#39;, &#39;OrNull&#39;), &#39;boundingRatioOrNull&#39;: (&#39;boundingRatio&#39;, &#39;OrNull&#39;), &#39;quantileExactLowOrNull&#39;: (&#39;quantileExactLow&#39;, &#39;OrNull&#39;), &#39;exponentialTimeDecayedAvgOrNull&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;OrNull&#39;), &#39;quantileDeterministicOrNull&#39;: (&#39;quantileDeterministic&#39;, &#39;OrNull&#39;), &#39;maxIntersectionsOrNull&#39;: (&#39;maxIntersections&#39;, &#39;OrNull&#39;), &#39;quantilesOrNull&#39;: (&#39;quantiles&#39;, &#39;OrNull&#39;), &#39;sequenceMatchOrNull&#39;: (&#39;sequenceMatch&#39;, &#39;OrNull&#39;), &#39;deltaSumTimestampOrNull&#39;: (&#39;deltaSumTimestamp&#39;, &#39;OrNull&#39;), &#39;groupBitmapAndOrNull&#39;: (&#39;groupBitmapAnd&#39;, &#39;OrNull&#39;), &#39;sumOrNull&#39;: (&#39;sum&#39;, &#39;OrNull&#39;), &#39;quantilesTimingOrNull&#39;: (&#39;quantilesTiming&#39;, &#39;OrNull&#39;), &#39;topKWeightedOrNull&#39;: (&#39;topKWeighted&#39;, &#39;OrNull&#39;), &#39;sumCountOrNull&#39;: (&#39;sumCount&#39;, &#39;OrNull&#39;), &#39;sequenceCountOrNull&#39;: (&#39;sequenceCount&#39;, &#39;OrNull&#39;), &#39;welchTTestOrNull&#39;: (&#39;welchTTest&#39;, &#39;OrNull&#39;), &#39;deltaSumOrNull&#39;: (&#39;deltaSum&#39;, &#39;OrNull&#39;), &#39;quantileExactOrNull&#39;: (&#39;quantileExact&#39;, &#39;OrNull&#39;), &#39;groupArrayOrNull&#39;: (&#39;groupArray&#39;, &#39;OrNull&#39;), &#39;groupBitmapOrOrNull&#39;: (&#39;groupBitmapOr&#39;, &#39;OrNull&#39;), &#39;maxIntersectionsPositionOrNull&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;OrNull&#39;), &#39;retentionOrNull&#39;: (&#39;retention&#39;, &#39;OrNull&#39;), &#39;kolmogorovSmirnovTestOrNull&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;OrNull&#39;), &#39;windowFunnelOrNull&#39;: (&#39;windowFunnel&#39;, &#39;OrNull&#39;), &#39;meanZTestOrNull&#39;: (&#39;meanZTest&#39;, &#39;OrNull&#39;), &#39;rankCorrOrNull&#39;: (&#39;rankCorr&#39;, &#39;OrNull&#39;), &#39;groupBitXorOrNull&#39;: (&#39;groupBitXor&#39;, &#39;OrNull&#39;), &#39;corrOrNull&#39;: (&#39;corr&#39;, &#39;OrNull&#39;), &#39;varPopOrNull&#39;: (&#39;varPop&#39;, &#39;OrNull&#39;), &#39;last_valueOrNull&#39;: (&#39;last_value&#39;, &#39;OrNull&#39;), &#39;sumKahanOrNull&#39;: (&#39;sumKahan&#39;, &#39;OrNull&#39;), &#39;simpleLinearRegressionOrNull&#39;: (&#39;simpleLinearRegression&#39;, &#39;OrNull&#39;), &#39;quantilesBFloat16WeightedOrNull&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;OrNull&#39;), &#39;varSampOrNull&#39;: (&#39;varSamp&#39;, &#39;OrNull&#39;), &#39;groupArrayLastOrNull&#39;: (&#39;groupArrayLast&#39;, &#39;OrNull&#39;), &#39;sumMapOrNull&#39;: (&#39;sumMap&#39;, &#39;OrNull&#39;), &#39;groupArrayInsertAtOrNull&#39;: (&#39;groupArrayInsertAt&#39;, &#39;OrNull&#39;), &#39;maxMapOrNull&#39;: (&#39;maxMap&#39;, &#39;OrNull&#39;), &#39;quantilesGKOrNull&#39;: (&#39;quantilesGK&#39;, &#39;OrNull&#39;), &#39;quantilesTimingWeightedOrNull&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;OrNull&#39;), &#39;groupUniqArrayOrNull&#39;: (&#39;groupUniqArray&#39;, &#39;OrNull&#39;), &#39;maxOrNull&#39;: (&#39;max&#39;, &#39;OrNull&#39;), &#39;exponentialMovingAverageOrNull&#39;: (&#39;exponentialMovingAverage&#39;, &#39;OrNull&#39;), &#39;quantileExactHighOrNull&#39;: (&#39;quantileExactHigh&#39;, &#39;OrNull&#39;), &#39;largestTriangleThreeBucketsOrNull&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;OrNull&#39;), &#39;cramersVBiasCorrectedOrNull&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;OrNull&#39;), &#39;quantilesExactOrNull&#39;: (&#39;quantilesExact&#39;, &#39;OrNull&#39;), &#39;groupArraySampleOrNull&#39;: (&#39;groupArraySample&#39;, &#39;OrNull&#39;), &#39;stddevPopOrNull&#39;: (&#39;stddevPop&#39;, &#39;OrNull&#39;), &#39;quantileTimingOrNull&#39;: (&#39;quantileTiming&#39;, &#39;OrNull&#39;), &#39;avgWeightedOrNull&#39;: (&#39;avgWeighted&#39;, &#39;OrNull&#39;), &#39;quantileBFloat16OrNull&#39;: (&#39;quantileBFloat16&#39;, &#39;OrNull&#39;), &#39;minOrNull&#39;: (&#39;min&#39;, &#39;OrNull&#39;), &#39;quantileGKOrNull&#39;: (&#39;quantileGK&#39;, &#39;OrNull&#39;), &#39;intervalLengthSumOrNull&#39;: (&#39;intervalLengthSum&#39;, &#39;OrNull&#39;), &#39;quantileInterpolatedWeightedOrNull&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;OrNull&#39;), &#39;quantileTDigestWeightedOrNull&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;OrNull&#39;), &#39;groupArrayMovingSumOrNull&#39;: (&#39;groupArrayMovingSum&#39;, &#39;OrNull&#39;), &#39;argMaxOrNull&#39;: (&#39;argMax&#39;, &#39;OrNull&#39;), &#39;medianOrNull&#39;: (&#39;median&#39;, &#39;OrNull&#39;), &#39;groupArrayMovingAvgOrNull&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;OrNull&#39;), &#39;groupBitmapXorOrNull&#39;: (&#39;groupBitmapXor&#39;, &#39;OrNull&#39;), &#39;uniqCombined64OrNull&#39;: (&#39;uniqCombined64&#39;, &#39;OrNull&#39;), &#39;quantilesDeterministicOrNull&#39;: (&#39;quantilesDeterministic&#39;, &#39;OrNull&#39;), &#39;cramersVOrNull&#39;: (&#39;cramersV&#39;, &#39;OrNull&#39;), &#39;groupBitmapOrNull&#39;: (&#39;groupBitmap&#39;, &#39;OrNull&#39;), &#39;sparkBarOrNull&#39;: (&#39;sparkBar&#39;, &#39;OrNull&#39;), &#39;topKOrNull&#39;: (&#39;topK&#39;, &#39;OrNull&#39;), &#39;groupBitAndOrNull&#39;: (&#39;groupBitAnd&#39;, &#39;OrNull&#39;), &#39;uniqExactOrNull&#39;: (&#39;uniqExact&#39;, &#39;OrNull&#39;), &#39;stddevSampOrNull&#39;: (&#39;stddevSamp&#39;, &#39;OrNull&#39;), &#39;first_valueOrNull&#39;: (&#39;first_value&#39;, &#39;OrNull&#39;), &#39;sumWithOverflowOrNull&#39;: (&#39;sumWithOverflow&#39;, &#39;OrNull&#39;), &#39;uniqUpToOrNull&#39;: (&#39;uniqUpTo&#39;, &#39;OrNull&#39;), &#39;quantilesExactHighOrNull&#39;: (&#39;quantilesExactHigh&#39;, &#39;OrNull&#39;), &#39;entropyOrNull&#39;: (&#39;entropy&#39;, &#39;OrNull&#39;), &#39;quantilesTDigestOrNull&#39;: (&#39;quantilesTDigest&#39;, &#39;OrNull&#39;), &#39;quantileTimingWeightedOrNull&#39;: (&#39;quantileTimingWeighted&#39;, &#39;OrNull&#39;), &#39;uniqOrNull&#39;: (&#39;uniq&#39;, &#39;OrNull&#39;), &#39;stochasticLogisticRegressionOrNull&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;OrNull&#39;), &#39;quantileOrNull&#39;: (&#39;quantile&#39;, &#39;OrNull&#39;), &#39;quantileBFloat16WeightedOrNull&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;OrNull&#39;), &#39;kurtPopOrNull&#39;: (&#39;kurtPop&#39;, &#39;OrNull&#39;), &#39;covarSampOrNull&#39;: (&#39;covarSamp&#39;, &#39;OrNull&#39;), &#39;anyLastOrNull&#39;: (&#39;anyLast&#39;, &#39;OrNull&#39;), &#39;uniqThetaOrNull&#39;: (&#39;uniqTheta&#39;, &#39;OrNull&#39;), &#39;covarPopOrNull&#39;: (&#39;covarPop&#39;, &#39;OrNull&#39;), &#39;uniqCombinedOrNull&#39;: (&#39;uniqCombined&#39;, &#39;OrNull&#39;), &#39;quantilesTDigestWeightedOrNull&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;OrNull&#39;), &#39;quantilesBFloat16OrNull&#39;: (&#39;quantilesBFloat16&#39;, &#39;OrNull&#39;), &#39;skewPopOrNull&#39;: (&#39;skewPop&#39;, &#39;OrNull&#39;), &#39;minMapOrNull&#39;: (&#39;minMap&#39;, &#39;OrNull&#39;), &#39;uniqHLL12OrNull&#39;: (&#39;uniqHLL12&#39;, &#39;OrNull&#39;), &#39;argMinOrNull&#39;: (&#39;argMin&#39;, &#39;OrNull&#39;), &#39;histogramOrNull&#39;: (&#39;histogram&#39;, &#39;OrNull&#39;), &#39;anyHeavyOrNull&#39;: (&#39;anyHeavy&#39;, &#39;OrNull&#39;), &#39;sequenceNextNodeOrNull&#39;: (&#39;sequenceNextNode&#39;, &#39;OrNull&#39;), &#39;theilsUOrNull&#39;: (&#39;theilsU&#39;, &#39;OrNull&#39;), &#39;groupBitOrOrNull&#39;: (&#39;groupBitOr&#39;, &#39;OrNull&#39;), &#39;mannWhitneyUTestOrNull&#39;: (&#39;mannWhitneyUTest&#39;, &#39;OrNull&#39;), &#39;anyOrNull&#39;: (&#39;any&#39;, &#39;OrNull&#39;), &#39;quantilesInterpolatedWeightedOrNull&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;OrNull&#39;), &#39;stochasticLinearRegressionOrNull&#39;: (&#39;stochasticLinearRegression&#39;, &#39;OrNull&#39;), &#39;studentTTestOrNull&#39;: (&#39;studentTTest&#39;, &#39;OrNull&#39;), &#39;skewSampOrNull&#39;: (&#39;skewSamp&#39;, &#39;OrNull&#39;), &#39;quantileExactWeightedOrNull&#39;: (&#39;quantileExactWeighted&#39;, &#39;OrNull&#39;), &#39;categoricalInformationValueOrNull&#39;: (&#39;categoricalInformationValue&#39;, &#39;OrNull&#39;), &#39;countOrNull&#39;: (&#39;count&#39;, &#39;OrNull&#39;), &#39;kurtSampOrNull&#39;: (&#39;kurtSamp&#39;, &#39;OrNull&#39;), &#39;quantileTDigestOrNull&#39;: (&#39;quantileTDigest&#39;, &#39;OrNull&#39;), &#39;avgOrNull&#39;: (&#39;avg&#39;, &#39;OrNull&#39;), &#39;quantilesExactLowResample&#39;: (&#39;quantilesExactLow&#39;, &#39;Resample&#39;), &#39;contingencyResample&#39;: (&#39;contingency&#39;, &#39;Resample&#39;), &#39;quantilesExactWeightedResample&#39;: (&#39;quantilesExactWeighted&#39;, &#39;Resample&#39;), &#39;boundingRatioResample&#39;: (&#39;boundingRatio&#39;, &#39;Resample&#39;), &#39;quantileExactLowResample&#39;: (&#39;quantileExactLow&#39;, &#39;Resample&#39;), &#39;exponentialTimeDecayedAvgResample&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;Resample&#39;), &#39;quantileDeterministicResample&#39;: (&#39;quantileDeterministic&#39;, &#39;Resample&#39;), &#39;maxIntersectionsResample&#39;: (&#39;maxIntersections&#39;, &#39;Resample&#39;), &#39;quantilesResample&#39;: (&#39;quantiles&#39;, &#39;Resample&#39;), &#39;sequenceMatchResample&#39;: (&#39;sequenceMatch&#39;, &#39;Resample&#39;), &#39;deltaSumTimestampResample&#39;: (&#39;deltaSumTimestamp&#39;, &#39;Resample&#39;), &#39;groupBitmapAndResample&#39;: (&#39;groupBitmapAnd&#39;, &#39;Resample&#39;), &#39;sumResample&#39;: (&#39;sum&#39;, &#39;Resample&#39;), &#39;quantilesTimingResample&#39;: (&#39;quantilesTiming&#39;, &#39;Resample&#39;), &#39;topKWeightedResample&#39;: (&#39;topKWeighted&#39;, &#39;Resample&#39;), &#39;sumCountResample&#39;: (&#39;sumCount&#39;, &#39;Resample&#39;), &#39;sequenceCountResample&#39;: (&#39;sequenceCount&#39;, &#39;Resample&#39;), &#39;welchTTestResample&#39;: (&#39;welchTTest&#39;, &#39;Resample&#39;), &#39;deltaSumResample&#39;: (&#39;deltaSum&#39;, &#39;Resample&#39;), &#39;quantileExactResample&#39;: (&#39;quantileExact&#39;, &#39;Resample&#39;), &#39;groupArrayResample&#39;: (&#39;groupArray&#39;, &#39;Resample&#39;), &#39;groupBitmapOrResample&#39;: (&#39;groupBitmapOr&#39;, &#39;Resample&#39;), &#39;maxIntersectionsPositionResample&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;Resample&#39;), &#39;retentionResample&#39;: (&#39;retention&#39;, &#39;Resample&#39;), &#39;kolmogorovSmirnovTestResample&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;Resample&#39;), &#39;windowFunnelResample&#39;: (&#39;windowFunnel&#39;, &#39;Resample&#39;), &#39;meanZTestResample&#39;: (&#39;meanZTest&#39;, &#39;Resample&#39;), &#39;rankCorrResample&#39;: (&#39;rankCorr&#39;, &#39;Resample&#39;), &#39;groupBitXorResample&#39;: (&#39;groupBitXor&#39;, &#39;Resample&#39;), &#39;corrResample&#39;: (&#39;corr&#39;, &#39;Resample&#39;), &#39;varPopResample&#39;: (&#39;varPop&#39;, &#39;Resample&#39;), &#39;last_valueResample&#39;: (&#39;last_value&#39;, &#39;Resample&#39;), &#39;sumKahanResample&#39;: (&#39;sumKahan&#39;, &#39;Resample&#39;), &#39;simpleLinearRegressionResample&#39;: (&#39;simpleLinearRegression&#39;, &#39;Resample&#39;), &#39;quantilesBFloat16WeightedResample&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;Resample&#39;), &#39;varSampResample&#39;: (&#39;varSamp&#39;, &#39;Resample&#39;), &#39;groupArrayLastResample&#39;: (&#39;groupArrayLast&#39;, &#39;Resample&#39;), &#39;sumMapResample&#39;: (&#39;sumMap&#39;, &#39;Resample&#39;), &#39;groupArrayInsertAtResample&#39;: (&#39;groupArrayInsertAt&#39;, &#39;Resample&#39;), &#39;maxMapResample&#39;: (&#39;maxMap&#39;, &#39;Resample&#39;), &#39;quantilesGKResample&#39;: (&#39;quantilesGK&#39;, &#39;Resample&#39;), &#39;quantilesTimingWeightedResample&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;Resample&#39;), &#39;groupUniqArrayResample&#39;: (&#39;groupUniqArray&#39;, &#39;Resample&#39;), &#39;maxResample&#39;: (&#39;max&#39;, &#39;Resample&#39;), &#39;exponentialMovingAverageResample&#39;: (&#39;exponentialMovingAverage&#39;, &#39;Resample&#39;), &#39;quantileExactHighResample&#39;: (&#39;quantileExactHigh&#39;, &#39;Resample&#39;), &#39;largestTriangleThreeBucketsResample&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;Resample&#39;), &#39;cramersVBiasCorrectedResample&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;Resample&#39;), &#39;quantilesExactResample&#39;: (&#39;quantilesExact&#39;, &#39;Resample&#39;), &#39;groupArraySampleResample&#39;: (&#39;groupArraySample&#39;, &#39;Resample&#39;), &#39;stddevPopResample&#39;: (&#39;stddevPop&#39;, &#39;Resample&#39;), &#39;quantileTimingResample&#39;: (&#39;quantileTiming&#39;, &#39;Resample&#39;), &#39;avgWeightedResample&#39;: (&#39;avgWeighted&#39;, &#39;Resample&#39;), &#39;quantileBFloat16Resample&#39;: (&#39;quantileBFloat16&#39;, &#39;Resample&#39;), &#39;minResample&#39;: (&#39;min&#39;, &#39;Resample&#39;), &#39;quantileGKResample&#39;: (&#39;quantileGK&#39;, &#39;Resample&#39;), &#39;intervalLengthSumResample&#39;: (&#39;intervalLengthSum&#39;, &#39;Resample&#39;), &#39;quantileInterpolatedWeightedResample&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;Resample&#39;), &#39;quantileTDigestWeightedResample&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;Resample&#39;), &#39;groupArrayMovingSumResample&#39;: (&#39;groupArrayMovingSum&#39;, &#39;Resample&#39;), &#39;argMaxResample&#39;: (&#39;argMax&#39;, &#39;Resample&#39;), &#39;medianResample&#39;: (&#39;median&#39;, &#39;Resample&#39;), &#39;groupArrayMovingAvgResample&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;Resample&#39;), &#39;groupBitmapXorResample&#39;: (&#39;groupBitmapXor&#39;, &#39;Resample&#39;), &#39;uniqCombined64Resample&#39;: (&#39;uniqCombined64&#39;, &#39;Resample&#39;), &#39;quantilesDeterministicResample&#39;: (&#39;quantilesDeterministic&#39;, &#39;Resample&#39;), &#39;cramersVResample&#39;: (&#39;cramersV&#39;, &#39;Resample&#39;), &#39;groupBitmapResample&#39;: (&#39;groupBitmap&#39;, &#39;Resample&#39;), &#39;sparkBarResample&#39;: (&#39;sparkBar&#39;, &#39;Resample&#39;), &#39;topKResample&#39;: (&#39;topK&#39;, &#39;Resample&#39;), &#39;groupBitAndResample&#39;: (&#39;groupBitAnd&#39;, &#39;Resample&#39;), &#39;uniqExactResample&#39;: (&#39;uniqExact&#39;, &#39;Resample&#39;), &#39;stddevSampResample&#39;: (&#39;stddevSamp&#39;, &#39;Resample&#39;), &#39;first_valueResample&#39;: (&#39;first_value&#39;, &#39;Resample&#39;), &#39;sumWithOverflowResample&#39;: (&#39;sumWithOverflow&#39;, &#39;Resample&#39;), &#39;uniqUpToResample&#39;: (&#39;uniqUpTo&#39;, &#39;Resample&#39;), &#39;quantilesExactHighResample&#39;: (&#39;quantilesExactHigh&#39;, &#39;Resample&#39;), &#39;entropyResample&#39;: (&#39;entropy&#39;, &#39;Resample&#39;), &#39;quantilesTDigestResample&#39;: (&#39;quantilesTDigest&#39;, &#39;Resample&#39;), &#39;quantileTimingWeightedResample&#39;: (&#39;quantileTimingWeighted&#39;, &#39;Resample&#39;), &#39;uniqResample&#39;: (&#39;uniq&#39;, &#39;Resample&#39;), &#39;stochasticLogisticRegressionResample&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;Resample&#39;), &#39;quantileResample&#39;: (&#39;quantile&#39;, &#39;Resample&#39;), &#39;quantileBFloat16WeightedResample&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;Resample&#39;), &#39;kurtPopResample&#39;: (&#39;kurtPop&#39;, &#39;Resample&#39;), &#39;covarSampResample&#39;: (&#39;covarSamp&#39;, &#39;Resample&#39;), &#39;anyLastResample&#39;: (&#39;anyLast&#39;, &#39;Resample&#39;), &#39;uniqThetaResample&#39;: (&#39;uniqTheta&#39;, &#39;Resample&#39;), &#39;covarPopResample&#39;: (&#39;covarPop&#39;, &#39;Resample&#39;), &#39;uniqCombinedResample&#39;: (&#39;uniqCombined&#39;, &#39;Resample&#39;), &#39;quantilesTDigestWeightedResample&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;Resample&#39;), &#39;quantilesBFloat16Resample&#39;: (&#39;quantilesBFloat16&#39;, &#39;Resample&#39;), &#39;skewPopResample&#39;: (&#39;skewPop&#39;, &#39;Resample&#39;), &#39;minMapResample&#39;: (&#39;minMap&#39;, &#39;Resample&#39;), &#39;uniqHLL12Resample&#39;: (&#39;uniqHLL12&#39;, &#39;Resample&#39;), &#39;argMinResample&#39;: (&#39;argMin&#39;, &#39;Resample&#39;), &#39;histogramResample&#39;: (&#39;histogram&#39;, &#39;Resample&#39;), &#39;anyHeavyResample&#39;: (&#39;anyHeavy&#39;, &#39;Resample&#39;), &#39;sequenceNextNodeResample&#39;: (&#39;sequenceNextNode&#39;, &#39;Resample&#39;), &#39;theilsUResample&#39;: (&#39;theilsU&#39;, &#39;Resample&#39;), &#39;groupBitOrResample&#39;: (&#39;groupBitOr&#39;, &#39;Resample&#39;), &#39;mannWhitneyUTestResample&#39;: (&#39;mannWhitneyUTest&#39;, &#39;Resample&#39;), &#39;anyResample&#39;: (&#39;any&#39;, &#39;Resample&#39;), &#39;quantilesInterpolatedWeightedResample&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;Resample&#39;), &#39;stochasticLinearRegressionResample&#39;: (&#39;stochasticLinearRegression&#39;, &#39;Resample&#39;), &#39;studentTTestResample&#39;: (&#39;studentTTest&#39;, &#39;Resample&#39;), &#39;skewSampResample&#39;: (&#39;skewSamp&#39;, &#39;Resample&#39;), &#39;quantileExactWeightedResample&#39;: (&#39;quantileExactWeighted&#39;, &#39;Resample&#39;), &#39;categoricalInformationValueResample&#39;: (&#39;categoricalInformationValue&#39;, &#39;Resample&#39;), &#39;countResample&#39;: (&#39;count&#39;, &#39;Resample&#39;), &#39;kurtSampResample&#39;: (&#39;kurtSamp&#39;, &#39;Resample&#39;), &#39;quantileTDigestResample&#39;: (&#39;quantileTDigest&#39;, &#39;Resample&#39;), &#39;avgResample&#39;: (&#39;avg&#39;, &#39;Resample&#39;), &#39;quantilesExactLowArgMin&#39;: (&#39;quantilesExactLow&#39;, &#39;ArgMin&#39;), &#39;contingencyArgMin&#39;: (&#39;contingency&#39;, &#39;ArgMin&#39;), &#39;quantilesExactWeightedArgMin&#39;: (&#39;quantilesExactWeighted&#39;, &#39;ArgMin&#39;), &#39;boundingRatioArgMin&#39;: (&#39;boundingRatio&#39;, &#39;ArgMin&#39;), &#39;quantileExactLowArgMin&#39;: (&#39;quantileExactLow&#39;, &#39;ArgMin&#39;), &#39;exponentialTimeDecayedAvgArgMin&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;ArgMin&#39;), &#39;quantileDeterministicArgMin&#39;: (&#39;quantileDeterministic&#39;, &#39;ArgMin&#39;), &#39;maxIntersectionsArgMin&#39;: (&#39;maxIntersections&#39;, &#39;ArgMin&#39;), &#39;quantilesArgMin&#39;: (&#39;quantiles&#39;, &#39;ArgMin&#39;), &#39;sequenceMatchArgMin&#39;: (&#39;sequenceMatch&#39;, &#39;ArgMin&#39;), &#39;deltaSumTimestampArgMin&#39;: (&#39;deltaSumTimestamp&#39;, &#39;ArgMin&#39;), &#39;groupBitmapAndArgMin&#39;: (&#39;groupBitmapAnd&#39;, &#39;ArgMin&#39;), &#39;sumArgMin&#39;: (&#39;sum&#39;, &#39;ArgMin&#39;), &#39;quantilesTimingArgMin&#39;: (&#39;quantilesTiming&#39;, &#39;ArgMin&#39;), &#39;topKWeightedArgMin&#39;: (&#39;topKWeighted&#39;, &#39;ArgMin&#39;), &#39;sumCountArgMin&#39;: (&#39;sumCount&#39;, &#39;ArgMin&#39;), &#39;sequenceCountArgMin&#39;: (&#39;sequenceCount&#39;, &#39;ArgMin&#39;), &#39;welchTTestArgMin&#39;: (&#39;welchTTest&#39;, &#39;ArgMin&#39;), &#39;deltaSumArgMin&#39;: (&#39;deltaSum&#39;, &#39;ArgMin&#39;), &#39;quantileExactArgMin&#39;: (&#39;quantileExact&#39;, &#39;ArgMin&#39;), &#39;groupArrayArgMin&#39;: (&#39;groupArray&#39;, &#39;ArgMin&#39;), &#39;groupBitmapOrArgMin&#39;: (&#39;groupBitmapOr&#39;, &#39;ArgMin&#39;), &#39;maxIntersectionsPositionArgMin&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;ArgMin&#39;), &#39;retentionArgMin&#39;: (&#39;retention&#39;, &#39;ArgMin&#39;), &#39;kolmogorovSmirnovTestArgMin&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;ArgMin&#39;), &#39;windowFunnelArgMin&#39;: (&#39;windowFunnel&#39;, &#39;ArgMin&#39;), &#39;meanZTestArgMin&#39;: (&#39;meanZTest&#39;, &#39;ArgMin&#39;), &#39;rankCorrArgMin&#39;: (&#39;rankCorr&#39;, &#39;ArgMin&#39;), &#39;groupBitXorArgMin&#39;: (&#39;groupBitXor&#39;, &#39;ArgMin&#39;), &#39;corrArgMin&#39;: (&#39;corr&#39;, &#39;ArgMin&#39;), &#39;varPopArgMin&#39;: (&#39;varPop&#39;, &#39;ArgMin&#39;), &#39;last_valueArgMin&#39;: (&#39;last_value&#39;, &#39;ArgMin&#39;), &#39;sumKahanArgMin&#39;: (&#39;sumKahan&#39;, &#39;ArgMin&#39;), &#39;simpleLinearRegressionArgMin&#39;: (&#39;simpleLinearRegression&#39;, &#39;ArgMin&#39;), &#39;quantilesBFloat16WeightedArgMin&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;ArgMin&#39;), &#39;varSampArgMin&#39;: (&#39;varSamp&#39;, &#39;ArgMin&#39;), &#39;groupArrayLastArgMin&#39;: (&#39;groupArrayLast&#39;, &#39;ArgMin&#39;), &#39;sumMapArgMin&#39;: (&#39;sumMap&#39;, &#39;ArgMin&#39;), &#39;groupArrayInsertAtArgMin&#39;: (&#39;groupArrayInsertAt&#39;, &#39;ArgMin&#39;), &#39;maxMapArgMin&#39;: (&#39;maxMap&#39;, &#39;ArgMin&#39;), &#39;quantilesGKArgMin&#39;: (&#39;quantilesGK&#39;, &#39;ArgMin&#39;), &#39;quantilesTimingWeightedArgMin&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;ArgMin&#39;), &#39;groupUniqArrayArgMin&#39;: (&#39;groupUniqArray&#39;, &#39;ArgMin&#39;), &#39;maxArgMin&#39;: (&#39;max&#39;, &#39;ArgMin&#39;), &#39;exponentialMovingAverageArgMin&#39;: (&#39;exponentialMovingAverage&#39;, &#39;ArgMin&#39;), &#39;quantileExactHighArgMin&#39;: (&#39;quantileExactHigh&#39;, &#39;ArgMin&#39;), &#39;largestTriangleThreeBucketsArgMin&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;ArgMin&#39;), &#39;cramersVBiasCorrectedArgMin&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;ArgMin&#39;), &#39;quantilesExactArgMin&#39;: (&#39;quantilesExact&#39;, &#39;ArgMin&#39;), &#39;groupArraySampleArgMin&#39;: (&#39;groupArraySample&#39;, &#39;ArgMin&#39;), &#39;stddevPopArgMin&#39;: (&#39;stddevPop&#39;, &#39;ArgMin&#39;), &#39;quantileTimingArgMin&#39;: (&#39;quantileTiming&#39;, &#39;ArgMin&#39;), &#39;avgWeightedArgMin&#39;: (&#39;avgWeighted&#39;, &#39;ArgMin&#39;), &#39;quantileBFloat16ArgMin&#39;: (&#39;quantileBFloat16&#39;, &#39;ArgMin&#39;), &#39;minArgMin&#39;: (&#39;min&#39;, &#39;ArgMin&#39;), &#39;quantileGKArgMin&#39;: (&#39;quantileGK&#39;, &#39;ArgMin&#39;), &#39;intervalLengthSumArgMin&#39;: (&#39;intervalLengthSum&#39;, &#39;ArgMin&#39;), &#39;quantileInterpolatedWeightedArgMin&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;ArgMin&#39;), &#39;quantileTDigestWeightedArgMin&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;ArgMin&#39;), &#39;groupArrayMovingSumArgMin&#39;: (&#39;groupArrayMovingSum&#39;, &#39;ArgMin&#39;), &#39;argMaxArgMin&#39;: (&#39;argMax&#39;, &#39;ArgMin&#39;), &#39;medianArgMin&#39;: (&#39;median&#39;, &#39;ArgMin&#39;), &#39;groupArrayMovingAvgArgMin&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;ArgMin&#39;), &#39;groupBitmapXorArgMin&#39;: (&#39;groupBitmapXor&#39;, &#39;ArgMin&#39;), &#39;uniqCombined64ArgMin&#39;: (&#39;uniqCombined64&#39;, &#39;ArgMin&#39;), &#39;quantilesDeterministicArgMin&#39;: (&#39;quantilesDeterministic&#39;, &#39;ArgMin&#39;), &#39;cramersVArgMin&#39;: (&#39;cramersV&#39;, &#39;ArgMin&#39;), &#39;groupBitmapArgMin&#39;: (&#39;groupBitmap&#39;, &#39;ArgMin&#39;), &#39;sparkBarArgMin&#39;: (&#39;sparkBar&#39;, &#39;ArgMin&#39;), &#39;topKArgMin&#39;: (&#39;topK&#39;, &#39;ArgMin&#39;), &#39;groupBitAndArgMin&#39;: (&#39;groupBitAnd&#39;, &#39;ArgMin&#39;), &#39;uniqExactArgMin&#39;: (&#39;uniqExact&#39;, &#39;ArgMin&#39;), &#39;stddevSampArgMin&#39;: (&#39;stddevSamp&#39;, &#39;ArgMin&#39;), &#39;first_valueArgMin&#39;: (&#39;first_value&#39;, &#39;ArgMin&#39;), &#39;sumWithOverflowArgMin&#39;: (&#39;sumWithOverflow&#39;, &#39;ArgMin&#39;), &#39;uniqUpToArgMin&#39;: (&#39;uniqUpTo&#39;, &#39;ArgMin&#39;), &#39;quantilesExactHighArgMin&#39;: (&#39;quantilesExactHigh&#39;, &#39;ArgMin&#39;), &#39;entropyArgMin&#39;: (&#39;entropy&#39;, &#39;ArgMin&#39;), &#39;quantilesTDigestArgMin&#39;: (&#39;quantilesTDigest&#39;, &#39;ArgMin&#39;), &#39;quantileTimingWeightedArgMin&#39;: (&#39;quantileTimingWeighted&#39;, &#39;ArgMin&#39;), &#39;uniqArgMin&#39;: (&#39;uniq&#39;, &#39;ArgMin&#39;), &#39;stochasticLogisticRegressionArgMin&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;ArgMin&#39;), &#39;quantileArgMin&#39;: (&#39;quantile&#39;, &#39;ArgMin&#39;), &#39;quantileBFloat16WeightedArgMin&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;ArgMin&#39;), &#39;kurtPopArgMin&#39;: (&#39;kurtPop&#39;, &#39;ArgMin&#39;), &#39;covarSampArgMin&#39;: (&#39;covarSamp&#39;, &#39;ArgMin&#39;), &#39;anyLastArgMin&#39;: (&#39;anyLast&#39;, &#39;ArgMin&#39;), &#39;uniqThetaArgMin&#39;: (&#39;uniqTheta&#39;, &#39;ArgMin&#39;), &#39;covarPopArgMin&#39;: (&#39;covarPop&#39;, &#39;ArgMin&#39;), &#39;uniqCombinedArgMin&#39;: (&#39;uniqCombined&#39;, &#39;ArgMin&#39;), &#39;quantilesTDigestWeightedArgMin&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;ArgMin&#39;), &#39;quantilesBFloat16ArgMin&#39;: (&#39;quantilesBFloat16&#39;, &#39;ArgMin&#39;), &#39;skewPopArgMin&#39;: (&#39;skewPop&#39;, &#39;ArgMin&#39;), &#39;minMapArgMin&#39;: (&#39;minMap&#39;, &#39;ArgMin&#39;), &#39;uniqHLL12ArgMin&#39;: (&#39;uniqHLL12&#39;, &#39;ArgMin&#39;), &#39;argMinArgMin&#39;: (&#39;argMin&#39;, &#39;ArgMin&#39;), &#39;histogramArgMin&#39;: (&#39;histogram&#39;, &#39;ArgMin&#39;), &#39;anyHeavyArgMin&#39;: (&#39;anyHeavy&#39;, &#39;ArgMin&#39;), &#39;sequenceNextNodeArgMin&#39;: (&#39;sequenceNextNode&#39;, &#39;ArgMin&#39;), &#39;theilsUArgMin&#39;: (&#39;theilsU&#39;, &#39;ArgMin&#39;), &#39;groupBitOrArgMin&#39;: (&#39;groupBitOr&#39;, &#39;ArgMin&#39;), &#39;mannWhitneyUTestArgMin&#39;: (&#39;mannWhitneyUTest&#39;, &#39;ArgMin&#39;), &#39;anyArgMin&#39;: (&#39;any&#39;, &#39;ArgMin&#39;), &#39;quantilesInterpolatedWeightedArgMin&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;ArgMin&#39;), &#39;stochasticLinearRegressionArgMin&#39;: (&#39;stochasticLinearRegression&#39;, &#39;ArgMin&#39;), &#39;studentTTestArgMin&#39;: (&#39;studentTTest&#39;, &#39;ArgMin&#39;), &#39;skewSampArgMin&#39;: (&#39;skewSamp&#39;, &#39;ArgMin&#39;), &#39;quantileExactWeightedArgMin&#39;: (&#39;quantileExactWeighted&#39;, &#39;ArgMin&#39;), &#39;categoricalInformationValueArgMin&#39;: (&#39;categoricalInformationValue&#39;, &#39;ArgMin&#39;), &#39;countArgMin&#39;: (&#39;count&#39;, &#39;ArgMin&#39;), &#39;kurtSampArgMin&#39;: (&#39;kurtSamp&#39;, &#39;ArgMin&#39;), &#39;quantileTDigestArgMin&#39;: (&#39;quantileTDigest&#39;, &#39;ArgMin&#39;), &#39;avgArgMin&#39;: (&#39;avg&#39;, &#39;ArgMin&#39;), &#39;quantilesExactLowArgMax&#39;: (&#39;quantilesExactLow&#39;, &#39;ArgMax&#39;), &#39;contingencyArgMax&#39;: (&#39;contingency&#39;, &#39;ArgMax&#39;), &#39;quantilesExactWeightedArgMax&#39;: (&#39;quantilesExactWeighted&#39;, &#39;ArgMax&#39;), &#39;boundingRatioArgMax&#39;: (&#39;boundingRatio&#39;, &#39;ArgMax&#39;), &#39;quantileExactLowArgMax&#39;: (&#39;quantileExactLow&#39;, &#39;ArgMax&#39;), &#39;exponentialTimeDecayedAvgArgMax&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;ArgMax&#39;), &#39;quantileDeterministicArgMax&#39;: (&#39;quantileDeterministic&#39;, &#39;ArgMax&#39;), &#39;maxIntersectionsArgMax&#39;: (&#39;maxIntersections&#39;, &#39;ArgMax&#39;), &#39;quantilesArgMax&#39;: (&#39;quantiles&#39;, &#39;ArgMax&#39;), &#39;sequenceMatchArgMax&#39;: (&#39;sequenceMatch&#39;, &#39;ArgMax&#39;), &#39;deltaSumTimestampArgMax&#39;: (&#39;deltaSumTimestamp&#39;, &#39;ArgMax&#39;), &#39;groupBitmapAndArgMax&#39;: (&#39;groupBitmapAnd&#39;, &#39;ArgMax&#39;), &#39;sumArgMax&#39;: (&#39;sum&#39;, &#39;ArgMax&#39;), &#39;quantilesTimingArgMax&#39;: (&#39;quantilesTiming&#39;, &#39;ArgMax&#39;), &#39;topKWeightedArgMax&#39;: (&#39;topKWeighted&#39;, &#39;ArgMax&#39;), &#39;sumCountArgMax&#39;: (&#39;sumCount&#39;, &#39;ArgMax&#39;), &#39;sequenceCountArgMax&#39;: (&#39;sequenceCount&#39;, &#39;ArgMax&#39;), &#39;welchTTestArgMax&#39;: (&#39;welchTTest&#39;, &#39;ArgMax&#39;), &#39;deltaSumArgMax&#39;: (&#39;deltaSum&#39;, &#39;ArgMax&#39;), &#39;quantileExactArgMax&#39;: (&#39;quantileExact&#39;, &#39;ArgMax&#39;), &#39;groupArrayArgMax&#39;: (&#39;groupArray&#39;, &#39;ArgMax&#39;), &#39;groupBitmapOrArgMax&#39;: (&#39;groupBitmapOr&#39;, &#39;ArgMax&#39;), &#39;maxIntersectionsPositionArgMax&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;ArgMax&#39;), &#39;retentionArgMax&#39;: (&#39;retention&#39;, &#39;ArgMax&#39;), &#39;kolmogorovSmirnovTestArgMax&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;ArgMax&#39;), &#39;windowFunnelArgMax&#39;: (&#39;windowFunnel&#39;, &#39;ArgMax&#39;), &#39;meanZTestArgMax&#39;: (&#39;meanZTest&#39;, &#39;ArgMax&#39;), &#39;rankCorrArgMax&#39;: (&#39;rankCorr&#39;, &#39;ArgMax&#39;), &#39;groupBitXorArgMax&#39;: (&#39;groupBitXor&#39;, &#39;ArgMax&#39;), &#39;corrArgMax&#39;: (&#39;corr&#39;, &#39;ArgMax&#39;), &#39;varPopArgMax&#39;: (&#39;varPop&#39;, &#39;ArgMax&#39;), &#39;last_valueArgMax&#39;: (&#39;last_value&#39;, &#39;ArgMax&#39;), &#39;sumKahanArgMax&#39;: (&#39;sumKahan&#39;, &#39;ArgMax&#39;), &#39;simpleLinearRegressionArgMax&#39;: (&#39;simpleLinearRegression&#39;, &#39;ArgMax&#39;), &#39;quantilesBFloat16WeightedArgMax&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;ArgMax&#39;), &#39;varSampArgMax&#39;: (&#39;varSamp&#39;, &#39;ArgMax&#39;), &#39;groupArrayLastArgMax&#39;: (&#39;groupArrayLast&#39;, &#39;ArgMax&#39;), &#39;sumMapArgMax&#39;: (&#39;sumMap&#39;, &#39;ArgMax&#39;), &#39;groupArrayInsertAtArgMax&#39;: (&#39;groupArrayInsertAt&#39;, &#39;ArgMax&#39;), &#39;maxMapArgMax&#39;: (&#39;maxMap&#39;, &#39;ArgMax&#39;), &#39;quantilesGKArgMax&#39;: (&#39;quantilesGK&#39;, &#39;ArgMax&#39;), &#39;quantilesTimingWeightedArgMax&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;ArgMax&#39;), &#39;groupUniqArrayArgMax&#39;: (&#39;groupUniqArray&#39;, &#39;ArgMax&#39;), &#39;maxArgMax&#39;: (&#39;max&#39;, &#39;ArgMax&#39;), &#39;exponentialMovingAverageArgMax&#39;: (&#39;exponentialMovingAverage&#39;, &#39;ArgMax&#39;), &#39;quantileExactHighArgMax&#39;: (&#39;quantileExactHigh&#39;, &#39;ArgMax&#39;), &#39;largestTriangleThreeBucketsArgMax&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;ArgMax&#39;), &#39;cramersVBiasCorrectedArgMax&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;ArgMax&#39;), &#39;quantilesExactArgMax&#39;: (&#39;quantilesExact&#39;, &#39;ArgMax&#39;), &#39;groupArraySampleArgMax&#39;: (&#39;groupArraySample&#39;, &#39;ArgMax&#39;), &#39;stddevPopArgMax&#39;: (&#39;stddevPop&#39;, &#39;ArgMax&#39;), &#39;quantileTimingArgMax&#39;: (&#39;quantileTiming&#39;, &#39;ArgMax&#39;), &#39;avgWeightedArgMax&#39;: (&#39;avgWeighted&#39;, &#39;ArgMax&#39;), &#39;quantileBFloat16ArgMax&#39;: (&#39;quantileBFloat16&#39;, &#39;ArgMax&#39;), &#39;minArgMax&#39;: (&#39;min&#39;, &#39;ArgMax&#39;), &#39;quantileGKArgMax&#39;: (&#39;quantileGK&#39;, &#39;ArgMax&#39;), &#39;intervalLengthSumArgMax&#39;: (&#39;intervalLengthSum&#39;, &#39;ArgMax&#39;), &#39;quantileInterpolatedWeightedArgMax&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;ArgMax&#39;), &#39;quantileTDigestWeightedArgMax&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;ArgMax&#39;), &#39;groupArrayMovingSumArgMax&#39;: (&#39;groupArrayMovingSum&#39;, &#39;ArgMax&#39;), &#39;argMaxArgMax&#39;: (&#39;argMax&#39;, &#39;ArgMax&#39;), &#39;medianArgMax&#39;: (&#39;median&#39;, &#39;ArgMax&#39;), &#39;groupArrayMovingAvgArgMax&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;ArgMax&#39;), &#39;groupBitmapXorArgMax&#39;: (&#39;groupBitmapXor&#39;, &#39;ArgMax&#39;), &#39;uniqCombined64ArgMax&#39;: (&#39;uniqCombined64&#39;, &#39;ArgMax&#39;), &#39;quantilesDeterministicArgMax&#39;: (&#39;quantilesDeterministic&#39;, &#39;ArgMax&#39;), &#39;cramersVArgMax&#39;: (&#39;cramersV&#39;, &#39;ArgMax&#39;), &#39;groupBitmapArgMax&#39;: (&#39;groupBitmap&#39;, &#39;ArgMax&#39;), &#39;sparkBarArgMax&#39;: (&#39;sparkBar&#39;, &#39;ArgMax&#39;), &#39;topKArgMax&#39;: (&#39;topK&#39;, &#39;ArgMax&#39;), &#39;groupBitAndArgMax&#39;: (&#39;groupBitAnd&#39;, &#39;ArgMax&#39;), &#39;uniqExactArgMax&#39;: (&#39;uniqExact&#39;, &#39;ArgMax&#39;), &#39;stddevSampArgMax&#39;: (&#39;stddevSamp&#39;, &#39;ArgMax&#39;), &#39;first_valueArgMax&#39;: (&#39;first_value&#39;, &#39;ArgMax&#39;), &#39;sumWithOverflowArgMax&#39;: (&#39;sumWithOverflow&#39;, &#39;ArgMax&#39;), &#39;uniqUpToArgMax&#39;: (&#39;uniqUpTo&#39;, &#39;ArgMax&#39;), &#39;quantilesExactHighArgMax&#39;: (&#39;quantilesExactHigh&#39;, &#39;ArgMax&#39;), &#39;entropyArgMax&#39;: (&#39;entropy&#39;, &#39;ArgMax&#39;), &#39;quantilesTDigestArgMax&#39;: (&#39;quantilesTDigest&#39;, &#39;ArgMax&#39;), &#39;quantileTimingWeightedArgMax&#39;: (&#39;quantileTimingWeighted&#39;, &#39;ArgMax&#39;), &#39;uniqArgMax&#39;: (&#39;uniq&#39;, &#39;ArgMax&#39;), &#39;stochasticLogisticRegressionArgMax&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;ArgMax&#39;), &#39;quantileArgMax&#39;: (&#39;quantile&#39;, &#39;ArgMax&#39;), &#39;quantileBFloat16WeightedArgMax&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;ArgMax&#39;), &#39;kurtPopArgMax&#39;: (&#39;kurtPop&#39;, &#39;ArgMax&#39;), &#39;covarSampArgMax&#39;: (&#39;covarSamp&#39;, &#39;ArgMax&#39;), &#39;anyLastArgMax&#39;: (&#39;anyLast&#39;, &#39;ArgMax&#39;), &#39;uniqThetaArgMax&#39;: (&#39;uniqTheta&#39;, &#39;ArgMax&#39;), &#39;covarPopArgMax&#39;: (&#39;covarPop&#39;, &#39;ArgMax&#39;), &#39;uniqCombinedArgMax&#39;: (&#39;uniqCombined&#39;, &#39;ArgMax&#39;), &#39;quantilesTDigestWeightedArgMax&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;ArgMax&#39;), &#39;quantilesBFloat16ArgMax&#39;: (&#39;quantilesBFloat16&#39;, &#39;ArgMax&#39;), &#39;skewPopArgMax&#39;: (&#39;skewPop&#39;, &#39;ArgMax&#39;), &#39;minMapArgMax&#39;: (&#39;minMap&#39;, &#39;ArgMax&#39;), &#39;uniqHLL12ArgMax&#39;: (&#39;uniqHLL12&#39;, &#39;ArgMax&#39;), &#39;argMinArgMax&#39;: (&#39;argMin&#39;, &#39;ArgMax&#39;), &#39;histogramArgMax&#39;: (&#39;histogram&#39;, &#39;ArgMax&#39;), &#39;anyHeavyArgMax&#39;: (&#39;anyHeavy&#39;, &#39;ArgMax&#39;), &#39;sequenceNextNodeArgMax&#39;: (&#39;sequenceNextNode&#39;, &#39;ArgMax&#39;), &#39;theilsUArgMax&#39;: (&#39;theilsU&#39;, &#39;ArgMax&#39;), &#39;groupBitOrArgMax&#39;: (&#39;groupBitOr&#39;, &#39;ArgMax&#39;), &#39;mannWhitneyUTestArgMax&#39;: (&#39;mannWhitneyUTest&#39;, &#39;ArgMax&#39;), &#39;anyArgMax&#39;: (&#39;any&#39;, &#39;ArgMax&#39;), &#39;quantilesInterpolatedWeightedArgMax&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;ArgMax&#39;), &#39;stochasticLinearRegressionArgMax&#39;: (&#39;stochasticLinearRegression&#39;, &#39;ArgMax&#39;), &#39;studentTTestArgMax&#39;: (&#39;studentTTest&#39;, &#39;ArgMax&#39;), &#39;skewSampArgMax&#39;: (&#39;skewSamp&#39;, &#39;ArgMax&#39;), &#39;quantileExactWeightedArgMax&#39;: (&#39;quantileExactWeighted&#39;, &#39;ArgMax&#39;), &#39;categoricalInformationValueArgMax&#39;: (&#39;categoricalInformationValue&#39;, &#39;ArgMax&#39;), &#39;countArgMax&#39;: (&#39;count&#39;, &#39;ArgMax&#39;), &#39;kurtSampArgMax&#39;: (&#39;kurtSamp&#39;, &#39;ArgMax&#39;), &#39;quantileTDigestArgMax&#39;: (&#39;quantileTDigest&#39;, &#39;ArgMax&#39;), &#39;avgArgMax&#39;: (&#39;avg&#39;, &#39;ArgMax&#39;), &#39;quantilesExactLow&#39;: (&#39;quantilesExactLow&#39;, &#39;&#39;), &#39;contingency&#39;: (&#39;contingency&#39;, &#39;&#39;), &#39;quantilesExactWeighted&#39;: (&#39;quantilesExactWeighted&#39;, &#39;&#39;), &#39;boundingRatio&#39;: (&#39;boundingRatio&#39;, &#39;&#39;), &#39;quantileExactLow&#39;: (&#39;quantileExactLow&#39;, &#39;&#39;), &#39;exponentialTimeDecayedAvg&#39;: (&#39;exponentialTimeDecayedAvg&#39;, &#39;&#39;), &#39;quantileDeterministic&#39;: (&#39;quantileDeterministic&#39;, &#39;&#39;), &#39;maxIntersections&#39;: (&#39;maxIntersections&#39;, &#39;&#39;), &#39;quantiles&#39;: (&#39;quantiles&#39;, &#39;&#39;), &#39;sequenceMatch&#39;: (&#39;sequenceMatch&#39;, &#39;&#39;), &#39;deltaSumTimestamp&#39;: (&#39;deltaSumTimestamp&#39;, &#39;&#39;), &#39;groupBitmapAnd&#39;: (&#39;groupBitmapAnd&#39;, &#39;&#39;), &#39;sum&#39;: (&#39;sum&#39;, &#39;&#39;), &#39;quantilesTiming&#39;: (&#39;quantilesTiming&#39;, &#39;&#39;), &#39;topKWeighted&#39;: (&#39;topKWeighted&#39;, &#39;&#39;), &#39;sumCount&#39;: (&#39;sumCount&#39;, &#39;&#39;), &#39;sequenceCount&#39;: (&#39;sequenceCount&#39;, &#39;&#39;), &#39;welchTTest&#39;: (&#39;welchTTest&#39;, &#39;&#39;), &#39;deltaSum&#39;: (&#39;deltaSum&#39;, &#39;&#39;), &#39;quantileExact&#39;: (&#39;quantileExact&#39;, &#39;&#39;), &#39;groupArray&#39;: (&#39;groupArray&#39;, &#39;&#39;), &#39;groupBitmapOr&#39;: (&#39;groupBitmapOr&#39;, &#39;&#39;), &#39;maxIntersectionsPosition&#39;: (&#39;maxIntersectionsPosition&#39;, &#39;&#39;), &#39;retention&#39;: (&#39;retention&#39;, &#39;&#39;), &#39;kolmogorovSmirnovTest&#39;: (&#39;kolmogorovSmirnovTest&#39;, &#39;&#39;), &#39;windowFunnel&#39;: (&#39;windowFunnel&#39;, &#39;&#39;), &#39;meanZTest&#39;: (&#39;meanZTest&#39;, &#39;&#39;), &#39;rankCorr&#39;: (&#39;rankCorr&#39;, &#39;&#39;), &#39;groupBitXor&#39;: (&#39;groupBitXor&#39;, &#39;&#39;), &#39;corr&#39;: (&#39;corr&#39;, &#39;&#39;), &#39;varPop&#39;: (&#39;varPop&#39;, &#39;&#39;), &#39;last_value&#39;: (&#39;last_value&#39;, &#39;&#39;), &#39;sumKahan&#39;: (&#39;sumKahan&#39;, &#39;&#39;), &#39;simpleLinearRegression&#39;: (&#39;simpleLinearRegression&#39;, &#39;&#39;), &#39;quantilesBFloat16Weighted&#39;: (&#39;quantilesBFloat16Weighted&#39;, &#39;&#39;), &#39;varSamp&#39;: (&#39;varSamp&#39;, &#39;&#39;), &#39;groupArrayLast&#39;: (&#39;groupArrayLast&#39;, &#39;&#39;), &#39;groupArrayInsertAt&#39;: (&#39;groupArrayInsertAt&#39;, &#39;&#39;), &#39;quantilesGK&#39;: (&#39;quantilesGK&#39;, &#39;&#39;), &#39;quantilesTimingWeighted&#39;: (&#39;quantilesTimingWeighted&#39;, &#39;&#39;), &#39;groupUniqArray&#39;: (&#39;groupUniqArray&#39;, &#39;&#39;), &#39;max&#39;: (&#39;max&#39;, &#39;&#39;), &#39;exponentialMovingAverage&#39;: (&#39;exponentialMovingAverage&#39;, &#39;&#39;), &#39;quantileExactHigh&#39;: (&#39;quantileExactHigh&#39;, &#39;&#39;), &#39;largestTriangleThreeBuckets&#39;: (&#39;largestTriangleThreeBuckets&#39;, &#39;&#39;), &#39;cramersVBiasCorrected&#39;: (&#39;cramersVBiasCorrected&#39;, &#39;&#39;), &#39;quantilesExact&#39;: (&#39;quantilesExact&#39;, &#39;&#39;), &#39;groupArraySample&#39;: (&#39;groupArraySample&#39;, &#39;&#39;), &#39;stddevPop&#39;: (&#39;stddevPop&#39;, &#39;&#39;), &#39;quantileTiming&#39;: (&#39;quantileTiming&#39;, &#39;&#39;), &#39;avgWeighted&#39;: (&#39;avgWeighted&#39;, &#39;&#39;), &#39;quantileBFloat16&#39;: (&#39;quantileBFloat16&#39;, &#39;&#39;), &#39;min&#39;: (&#39;min&#39;, &#39;&#39;), &#39;quantileGK&#39;: (&#39;quantileGK&#39;, &#39;&#39;), &#39;intervalLengthSum&#39;: (&#39;intervalLengthSum&#39;, &#39;&#39;), &#39;quantileInterpolatedWeighted&#39;: (&#39;quantileInterpolatedWeighted&#39;, &#39;&#39;), &#39;quantileTDigestWeighted&#39;: (&#39;quantileTDigestWeighted&#39;, &#39;&#39;), &#39;groupArrayMovingSum&#39;: (&#39;groupArrayMovingSum&#39;, &#39;&#39;), &#39;argMax&#39;: (&#39;argMax&#39;, &#39;&#39;), &#39;median&#39;: (&#39;median&#39;, &#39;&#39;), &#39;groupArrayMovingAvg&#39;: (&#39;groupArrayMovingAvg&#39;, &#39;&#39;), &#39;groupBitmapXor&#39;: (&#39;groupBitmapXor&#39;, &#39;&#39;), &#39;uniqCombined64&#39;: (&#39;uniqCombined64&#39;, &#39;&#39;), &#39;quantilesDeterministic&#39;: (&#39;quantilesDeterministic&#39;, &#39;&#39;), &#39;cramersV&#39;: (&#39;cramersV&#39;, &#39;&#39;), &#39;groupBitmap&#39;: (&#39;groupBitmap&#39;, &#39;&#39;), &#39;sparkBar&#39;: (&#39;sparkBar&#39;, &#39;&#39;), &#39;topK&#39;: (&#39;topK&#39;, &#39;&#39;), &#39;groupBitAnd&#39;: (&#39;groupBitAnd&#39;, &#39;&#39;), &#39;uniqExact&#39;: (&#39;uniqExact&#39;, &#39;&#39;), &#39;stddevSamp&#39;: (&#39;stddevSamp&#39;, &#39;&#39;), &#39;first_value&#39;: (&#39;first_value&#39;, &#39;&#39;), &#39;sumWithOverflow&#39;: (&#39;sumWithOverflow&#39;, &#39;&#39;), &#39;uniqUpTo&#39;: (&#39;uniqUpTo&#39;, &#39;&#39;), &#39;quantilesExactHigh&#39;: (&#39;quantilesExactHigh&#39;, &#39;&#39;), &#39;entropy&#39;: (&#39;entropy&#39;, &#39;&#39;), &#39;quantilesTDigest&#39;: (&#39;quantilesTDigest&#39;, &#39;&#39;), &#39;quantileTimingWeighted&#39;: (&#39;quantileTimingWeighted&#39;, &#39;&#39;), &#39;uniq&#39;: (&#39;uniq&#39;, &#39;&#39;), &#39;stochasticLogisticRegression&#39;: (&#39;stochasticLogisticRegression&#39;, &#39;&#39;), &#39;quantile&#39;: (&#39;quantile&#39;, &#39;&#39;), &#39;quantileBFloat16Weighted&#39;: (&#39;quantileBFloat16Weighted&#39;, &#39;&#39;), &#39;kurtPop&#39;: (&#39;kurtPop&#39;, &#39;&#39;), &#39;covarSamp&#39;: (&#39;covarSamp&#39;, &#39;&#39;), &#39;anyLast&#39;: (&#39;anyLast&#39;, &#39;&#39;), &#39;uniqTheta&#39;: (&#39;uniqTheta&#39;, &#39;&#39;), &#39;covarPop&#39;: (&#39;covarPop&#39;, &#39;&#39;), &#39;uniqCombined&#39;: (&#39;uniqCombined&#39;, &#39;&#39;), &#39;quantilesTDigestWeighted&#39;: (&#39;quantilesTDigestWeighted&#39;, &#39;&#39;), &#39;quantilesBFloat16&#39;: (&#39;quantilesBFloat16&#39;, &#39;&#39;), &#39;skewPop&#39;: (&#39;skewPop&#39;, &#39;&#39;), &#39;uniqHLL12&#39;: (&#39;uniqHLL12&#39;, &#39;&#39;), &#39;argMin&#39;: (&#39;argMin&#39;, &#39;&#39;), &#39;histogram&#39;: (&#39;histogram&#39;, &#39;&#39;), &#39;anyHeavy&#39;: (&#39;anyHeavy&#39;, &#39;&#39;), &#39;sequenceNextNode&#39;: (&#39;sequenceNextNode&#39;, &#39;&#39;), &#39;theilsU&#39;: (&#39;theilsU&#39;, &#39;&#39;), &#39;groupBitOr&#39;: (&#39;groupBitOr&#39;, &#39;&#39;), &#39;mannWhitneyUTest&#39;: (&#39;mannWhitneyUTest&#39;, &#39;&#39;), &#39;any&#39;: (&#39;any&#39;, &#39;&#39;), &#39;quantilesInterpolatedWeighted&#39;: (&#39;quantilesInterpolatedWeighted&#39;, &#39;&#39;), &#39;stochasticLinearRegression&#39;: (&#39;stochasticLinearRegression&#39;, &#39;&#39;), &#39;studentTTest&#39;: (&#39;studentTTest&#39;, &#39;&#39;), &#39;skewSamp&#39;: (&#39;skewSamp&#39;, &#39;&#39;), &#39;quantileExactWeighted&#39;: (&#39;quantileExactWeighted&#39;, &#39;&#39;), &#39;categoricalInformationValue&#39;: (&#39;categoricalInformationValue&#39;, &#39;&#39;), &#39;count&#39;: (&#39;count&#39;, &#39;&#39;), &#39;kurtSamp&#39;: (&#39;kurtSamp&#39;, &#39;&#39;), &#39;quantileTDigest&#39;: (&#39;quantileTDigest&#39;, &#39;&#39;), &#39;avg&#39;: (&#39;avg&#39;, &#39;&#39;)}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.AGG_FUNC_MAPPING"></a>
</div>
<div id="ClickHouse.Parser.FUNCTIONS_WITH_ALIASED_ARGS" class="classattr">
<div class="attr variable">
<span class="name">FUNCTIONS_WITH_ALIASED_ARGS</span> =
<span class="default_value">{&#39;TUPLE&#39;, &#39;STRUCT&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.FUNCTIONS_WITH_ALIASED_ARGS"></a>
</div>
<div id="ClickHouse.Parser.FUNCTION_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">FUNCTION_PARSERS</span> =
<input id="ClickHouse.Parser.FUNCTION_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.FUNCTION_PARSERS-view-value"></label><span class="default_value">{&#39;CAST&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CEIL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CONVERT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DECODE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;EXTRACT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;FLOOR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;GAP_FILL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;JSON_OBJECT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;JSON_OBJECTAGG&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;JSON_TABLE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;NORMALIZE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;OPENJSON&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;OVERLAY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;POSITION&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PREDICT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SAFE_CAST&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;STRING_AGG&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SUBSTRING&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TRIM&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TRY_CAST&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TRY_CONVERT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;XMLELEMENT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;XMLTABLE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ARRAYJOIN&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;QUANTILE&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;MEDIAN&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;COLUMNS&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.FUNCTION_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.PROPERTY_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">PROPERTY_PARSERS</span> =
<input id="ClickHouse.Parser.PROPERTY_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.PROPERTY_PARSERS-view-value"></label><span class="default_value">{&#39;ALLOWED_VALUES&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ALGORITHM&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;AUTO&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;AUTO_INCREMENT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;BACKUP&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;BLOCKCOMPRESSION&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CHARSET&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CHARACTER SET&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CHECKSUM&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CLUSTER BY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CLUSTERED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COLLATE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COMMENT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CONTAINS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COPY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DATABLOCKSIZE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DATA_DELETION&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DEFINER&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DETERMINISTIC&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DISTRIBUTED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DUPLICATE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DISTKEY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DISTSTYLE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;EMPTY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ENGINE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;EXECUTE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;EXTERNAL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;FALLBACK&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;FORMAT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;FREESPACE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;GLOBAL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;HEAP&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ICEBERG&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;IMMUTABLE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;INHERITS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;INPUT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;JOURNAL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LANGUAGE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LAYOUT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LIFETIME&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LIKE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LOCATION&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LOCK&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LOCKING&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LOG&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;MATERIALIZED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;MERGEBLOCKRATIO&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;MODIFIES&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;MULTISET&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;NO&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ON&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ORDER BY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;OUTPUT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PARTITION&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PARTITION BY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PARTITIONED BY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PARTITIONED_BY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PRIMARY KEY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;RANGE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;READS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;REMOTE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;RETURNS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;STRICT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;STREAMING&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ROW&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ROW_FORMAT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SAMPLE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SECURE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SECURITY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SET&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SETTINGS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SHARING&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SORTKEY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SOURCE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;STABLE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;STORED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SYSTEM_VERSIONING&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TBLPROPERTIES&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TEMP&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TEMPORARY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TO&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TRANSIENT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TRANSFORM&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TTL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;USING&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;UNLOGGED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;VOLATILE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;WITH&#39;: &lt;function Parser.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.PROPERTY_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.NO_PAREN_FUNCTION_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">NO_PAREN_FUNCTION_PARSERS</span> =
<input id="ClickHouse.Parser.NO_PAREN_FUNCTION_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.NO_PAREN_FUNCTION_PARSERS-view-value"></label><span class="default_value">{&#39;CASE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CONNECT_BY_ROOT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;IF&#39;: &lt;function Parser.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.NO_PAREN_FUNCTION_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.NO_PAREN_FUNCTIONS" class="classattr">
<div class="attr variable">
<span class="name">NO_PAREN_FUNCTIONS</span> =
<input id="ClickHouse.Parser.NO_PAREN_FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.NO_PAREN_FUNCTIONS-view-value"></label><span class="default_value">{&lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;: &lt;class &#39;<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;: &lt;class &#39;<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;: &lt;class &#39;<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;: &lt;class &#39;<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.NO_PAREN_FUNCTIONS"></a>
</div>
<div id="ClickHouse.Parser.RANGE_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">RANGE_PARSERS</span> =
<input id="ClickHouse.Parser.RANGE_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.RANGE_PARSERS-view-value"></label><span class="default_value">{&lt;TokenType.AT_GT: &#39;AT_GT&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.BETWEEN: &#39;BETWEEN&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.GLOB: &#39;GLOB&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.ILIKE: &#39;ILIKE&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.IN: &#39;IN&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.IRLIKE: &#39;IRLIKE&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.LIKE: &#39;LIKE&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.LT_AT: &#39;LT_AT&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.RLIKE: &#39;RLIKE&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.SIMILAR_TO: &#39;SIMILAR_TO&#39;&gt;: &lt;function binary_range_parser.&lt;locals&gt;._parse_binary_range&gt;, &lt;TokenType.FOR: &#39;FOR&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.GLOBAL: &#39;GLOBAL&#39;&gt;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.RANGE_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.COLUMN_OPERATORS" class="classattr">
<div class="attr variable">
<span class="name">COLUMN_OPERATORS</span> =
<input id="ClickHouse.Parser.COLUMN_OPERATORS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.COLUMN_OPERATORS-view-value"></label><span class="default_value">{&lt;TokenType.DOT: &#39;DOT&#39;&gt;: None, &lt;TokenType.DOTCOLON: &#39;DOTCOLON&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.DCOLON: &#39;DCOLON&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.ARROW: &#39;ARROW&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.DARROW: &#39;DARROW&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.HASH_ARROW: &#39;HASH_ARROW&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.DHASH_ARROW: &#39;DHASH_ARROW&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.COLUMN_OPERATORS"></a>
</div>
<div id="ClickHouse.Parser.JOIN_KINDS" class="classattr">
<div class="attr variable">
<span class="name">JOIN_KINDS</span> =
<input id="ClickHouse.Parser.JOIN_KINDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.JOIN_KINDS-view-value"></label><span class="default_value">{&lt;TokenType.OUTER: &#39;OUTER&#39;&gt;, &lt;TokenType.CROSS: &#39;CROSS&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.ASOF: &#39;ASOF&#39;&gt;, &lt;TokenType.STRAIGHT_JOIN: &#39;STRAIGHT_JOIN&#39;&gt;, &lt;TokenType.INNER: &#39;INNER&#39;&gt;, &lt;TokenType.SEMI: &#39;SEMI&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.ANTI: &#39;ANTI&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.JOIN_KINDS"></a>
</div>
<div id="ClickHouse.Parser.TABLE_ALIAS_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">TABLE_ALIAS_TOKENS</span> =
<input id="ClickHouse.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &lt;TokenType.LIST: &#39;LIST&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.FILE_FORMAT: &#39;FILE_FORMAT&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;, &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &lt;TokenType.MULTIPOLYGON: &#39;MULTIPOLYGON&#39;&gt;, &lt;TokenType.SMALLDATETIME: &#39;SMALLDATETIME&#39;&gt;, &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &lt;TokenType.MODEL: &#39;MODEL&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.SEQUENCE: &#39;SEQUENCE&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.STRAIGHT_JOIN: &#39;STRAIGHT_JOIN&#39;&gt;, &lt;TokenType.IDENTIFIER: &#39;IDENTIFIER&#39;&gt;, &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &lt;TokenType.SINK: &#39;SINK&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.UNNEST: &#39;UNNEST&#39;&gt;, &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &lt;TokenType.EXPORT: &#39;EXPORT&#39;&gt;, &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &lt;TokenType.RING: &#39;RING&#39;&gt;, &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &lt;TokenType.TDIGEST: &#39;TDIGEST&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.REFRESH: &#39;REFRESH&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.POLYGON: &#39;POLYGON&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.USE: &#39;USE&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.ROLLUP: &#39;ROLLUP&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.DECIMAL256: &#39;DECIMAL256&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.DETACH: &#39;DETACH&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.BLOB: &#39;BLOB&#39;&gt;, &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.CURRENT_SCHEMA: &#39;CURRENT_SCHEMA&#39;&gt;, &lt;TokenType.NAME: &#39;NAME&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.SOURCE: &#39;SOURCE&#39;&gt;, &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &lt;TokenType.STREAMLIT: &#39;STREAMLIT&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.PUT: &#39;PUT&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.WAREHOUSE: &#39;WAREHOUSE&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.DATETIME2: &#39;DATETIME2&#39;&gt;, &lt;TokenType.NAMESPACE: &#39;NAMESPACE&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &lt;TokenType.RENAME: &#39;RENAME&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.VECTOR: &#39;VECTOR&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.DECIMAL64: &#39;DECIMAL64&#39;&gt;, &lt;TokenType.MULTILINESTRING: &#39;MULTILINESTRING&#39;&gt;, &lt;TokenType.TRUNCATE: &#39;TRUNCATE&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.OPERATOR: &#39;OPERATOR&#39;&gt;, &lt;TokenType.OFFSET: &#39;OFFSET&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.COPY: &#39;COPY&#39;&gt;, &lt;TokenType.STAGE: &#39;STAGE&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.DECIMAL128: &#39;DECIMAL128&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.TAG: &#39;TAG&#39;&gt;, &lt;TokenType.LIMIT: &#39;LIMIT&#39;&gt;, &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &lt;TokenType.POINT: &#39;POINT&#39;&gt;, &lt;TokenType.END: &#39;END&#39;&gt;, &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;, &lt;TokenType.LINESTRING: &#39;LINESTRING&#39;&gt;, &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.CUBE: &#39;CUBE&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.ATTACH: &#39;ATTACH&#39;&gt;, &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &lt;TokenType.DYNAMIC: &#39;DYNAMIC&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.TOP: &#39;TOP&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.UDOUBLE: &#39;UDOUBLE&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.DECIMAL32: &#39;DECIMAL32&#39;&gt;, &lt;TokenType.STORAGE_INTEGRATION: &#39;STORAGE_INTEGRATION&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.TABLE_ALIAS_TOKENS"></a>
</div>
<div id="ClickHouse.Parser.ALIAS_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">ALIAS_TOKENS</span> =
<input id="ClickHouse.Parser.ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.ALIAS_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &lt;TokenType.LIST: &#39;LIST&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.FILE_FORMAT: &#39;FILE_FORMAT&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &lt;TokenType.MULTIPOLYGON: &#39;MULTIPOLYGON&#39;&gt;, &lt;TokenType.SMALLDATETIME: &#39;SMALLDATETIME&#39;&gt;, &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &lt;TokenType.FINAL: &#39;FINAL&#39;&gt;, &lt;TokenType.MODEL: &#39;MODEL&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.SEQUENCE: &#39;SEQUENCE&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.IDENTIFIER: &#39;IDENTIFIER&#39;&gt;, &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &lt;TokenType.ANTI: &#39;ANTI&#39;&gt;, &lt;TokenType.SINK: &#39;SINK&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.UNNEST: &#39;UNNEST&#39;&gt;, &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &lt;TokenType.EXPORT: &#39;EXPORT&#39;&gt;, &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &lt;TokenType.RING: &#39;RING&#39;&gt;, &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &lt;TokenType.TDIGEST: &#39;TDIGEST&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.REFRESH: &#39;REFRESH&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.ASOF: &#39;ASOF&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.POLYGON: &#39;POLYGON&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.USE: &#39;USE&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.ROLLUP: &#39;ROLLUP&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.DECIMAL256: &#39;DECIMAL256&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.LEFT: &#39;LEFT&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.DETACH: &#39;DETACH&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.NATURAL: &#39;NATURAL&#39;&gt;, &lt;TokenType.SEMI: &#39;SEMI&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.BLOB: &#39;BLOB&#39;&gt;, &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.CURRENT_SCHEMA: &#39;CURRENT_SCHEMA&#39;&gt;, &lt;TokenType.NAME: &#39;NAME&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.SOURCE: &#39;SOURCE&#39;&gt;, &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &lt;TokenType.STREAMLIT: &#39;STREAMLIT&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.APPLY: &#39;APPLY&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.PUT: &#39;PUT&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.WAREHOUSE: &#39;WAREHOUSE&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;, &lt;TokenType.DATETIME2: &#39;DATETIME2&#39;&gt;, &lt;TokenType.NAMESPACE: &#39;NAMESPACE&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &lt;TokenType.RENAME: &#39;RENAME&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.VECTOR: &#39;VECTOR&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.RIGHT: &#39;RIGHT&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.DECIMAL64: &#39;DECIMAL64&#39;&gt;, &lt;TokenType.MULTILINESTRING: &#39;MULTILINESTRING&#39;&gt;, &lt;TokenType.TRUNCATE: &#39;TRUNCATE&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.OPERATOR: &#39;OPERATOR&#39;&gt;, &lt;TokenType.OFFSET: &#39;OFFSET&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &lt;TokenType.FULL: &#39;FULL&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.WINDOW: &#39;WINDOW&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.COPY: &#39;COPY&#39;&gt;, &lt;TokenType.STAGE: &#39;STAGE&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.DECIMAL128: &#39;DECIMAL128&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.TAG: &#39;TAG&#39;&gt;, &lt;TokenType.LIMIT: &#39;LIMIT&#39;&gt;, &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &lt;TokenType.POINT: &#39;POINT&#39;&gt;, &lt;TokenType.END: &#39;END&#39;&gt;, &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;, &lt;TokenType.LINESTRING: &#39;LINESTRING&#39;&gt;, &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.CUBE: &#39;CUBE&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.ATTACH: &#39;ATTACH&#39;&gt;, &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &lt;TokenType.DYNAMIC: &#39;DYNAMIC&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.TOP: &#39;TOP&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.UDOUBLE: &#39;UDOUBLE&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.DECIMAL32: &#39;DECIMAL32&#39;&gt;, &lt;TokenType.STORAGE_INTEGRATION: &#39;STORAGE_INTEGRATION&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.ALIAS_TOKENS"></a>
</div>
<div id="ClickHouse.Parser.LOG_DEFAULTS_TO_LN" class="classattr">
<div class="attr variable">
<span class="name">LOG_DEFAULTS_TO_LN</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.LOG_DEFAULTS_TO_LN"></a>
</div>
<div id="ClickHouse.Parser.QUERY_MODIFIER_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">QUERY_MODIFIER_PARSERS</span> =
<input id="ClickHouse.Parser.QUERY_MODIFIER_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.QUERY_MODIFIER_PARSERS-view-value"></label><span class="default_value">{&lt;TokenType.MATCH_RECOGNIZE: &#39;MATCH_RECOGNIZE&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.PREWHERE: &#39;PREWHERE&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.WHERE: &#39;WHERE&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.GROUP_BY: &#39;GROUP_BY&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.HAVING: &#39;HAVING&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.QUALIFY: &#39;QUALIFY&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.WINDOW: &#39;WINDOW&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.ORDER_BY: &#39;ORDER_BY&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.LIMIT: &#39;LIMIT&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.FETCH: &#39;FETCH&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.OFFSET: &#39;OFFSET&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.FOR: &#39;FOR&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.LOCK: &#39;LOCK&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.TABLE_SAMPLE: &#39;TABLE_SAMPLE&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.USING: &#39;USING&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.CLUSTER_BY: &#39;CLUSTER_BY&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.DISTRIBUTE_BY: &#39;DISTRIBUTE_BY&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.SORT_BY: &#39;SORT_BY&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.CONNECT_BY: &#39;CONNECT_BY&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.START_WITH: &#39;START_WITH&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.QUERY_MODIFIER_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.CONSTRAINT_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">CONSTRAINT_PARSERS</span> =
<input id="ClickHouse.Parser.CONSTRAINT_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.CONSTRAINT_PARSERS-view-value"></label><span class="default_value">{&#39;AUTOINCREMENT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;AUTO_INCREMENT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CASESPECIFIC&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CHARACTER SET&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CHECK&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COLLATE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COMMENT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;COMPRESS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CLUSTERED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;NONCLUSTERED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DEFAULT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ENCODE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;EPHEMERAL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;EXCLUDE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;FOREIGN KEY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;FORMAT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;GENERATED&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;IDENTITY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;INLINE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LIKE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;NOT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;NULL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ON&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PATH&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PERIOD&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;PRIMARY KEY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;REFERENCES&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TITLE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TTL&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;UNIQUE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;UPPERCASE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;WATERMARK&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;WITH&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;INDEX&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;, &#39;CODEC&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.CONSTRAINT_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.ALTER_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">ALTER_PARSERS</span> =
<input id="ClickHouse.Parser.ALTER_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.ALTER_PARSERS-view-value"></label><span class="default_value">{&#39;ADD&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;AS&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;ALTER&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;CLUSTER BY&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DELETE&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DROP&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;RENAME&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SET&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;SWAP&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;REPLACE&#39;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.ALTER_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.SCHEMA_UNNAMED_CONSTRAINTS" class="classattr">
<div class="attr variable">
<span class="name">SCHEMA_UNNAMED_CONSTRAINTS</span> =
<span class="default_value">{&#39;PERIOD&#39;, &#39;WATERMARK&#39;, &#39;LIKE&#39;, &#39;PRIMARY KEY&#39;, &#39;INDEX&#39;, &#39;EXCLUDE&#39;, &#39;CHECK&#39;, &#39;FOREIGN KEY&#39;, &#39;UNIQUE&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.SCHEMA_UNNAMED_CONSTRAINTS"></a>
</div>
<div id="ClickHouse.Parser.PLACEHOLDER_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">PLACEHOLDER_PARSERS</span> =
<input id="ClickHouse.Parser.PLACEHOLDER_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Parser.PLACEHOLDER_PARSERS-view-value"></label><span class="default_value">{&lt;TokenType.PLACEHOLDER: &#39;PLACEHOLDER&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.PARAMETER: &#39;PARAMETER&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.COLON: &#39;COLON&#39;&gt;: &lt;function Parser.&lt;lambda&gt;&gt;, &lt;TokenType.L_BRACE: &#39;L_BRACE&#39;&gt;: &lt;function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.PLACEHOLDER_PARSERS"></a>
</div>
<div id="ClickHouse.Parser.SHOW_TRIE" class="classattr">
<div class="attr variable">
<span class="name">SHOW_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.SHOW_TRIE"></a>
</div>
<div id="ClickHouse.Parser.SET_TRIE" class="classattr">
<div class="attr variable">
<span class="name">SET_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{&#39;GLOBAL&#39;: {0: True}, &#39;LOCAL&#39;: {0: True}, &#39;SESSION&#39;: {0: True}, &#39;TRANSACTION&#39;: {0: True}}</span>
</div>
<a class="headerlink" href="#ClickHouse.Parser.SET_TRIE"></a>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt><a href="../parser.html#Parser">sqlglot.parser.Parser</a></dt>
<dd id="ClickHouse.Parser.__init__" class="function"><a href="../parser.html#Parser.__init__">Parser</a></dd>
<dd id="ClickHouse.Parser.STRUCT_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.STRUCT_TYPE_TOKENS">STRUCT_TYPE_TOKENS</a></dd>
<dd id="ClickHouse.Parser.NESTED_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.NESTED_TYPE_TOKENS">NESTED_TYPE_TOKENS</a></dd>
<dd id="ClickHouse.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd>
<dd id="ClickHouse.Parser.AGGREGATE_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.AGGREGATE_TYPE_TOKENS">AGGREGATE_TYPE_TOKENS</a></dd>
<dd id="ClickHouse.Parser.TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd>
<dd id="ClickHouse.Parser.SIGNED_TO_UNSIGNED_TYPE_TOKEN" class="variable"><a href="../parser.html#Parser.SIGNED_TO_UNSIGNED_TYPE_TOKEN">SIGNED_TO_UNSIGNED_TYPE_TOKEN</a></dd>
<dd id="ClickHouse.Parser.SUBQUERY_PREDICATES" class="variable"><a href="../parser.html#Parser.SUBQUERY_PREDICATES">SUBQUERY_PREDICATES</a></dd>
<dd id="ClickHouse.Parser.DB_CREATABLES" class="variable"><a href="../parser.html#Parser.DB_CREATABLES">DB_CREATABLES</a></dd>
<dd id="ClickHouse.Parser.CREATABLES" class="variable"><a href="../parser.html#Parser.CREATABLES">CREATABLES</a></dd>
<dd id="ClickHouse.Parser.ALTERABLES" class="variable"><a href="../parser.html#Parser.ALTERABLES">ALTERABLES</a></dd>
<dd id="ClickHouse.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd>
<dd id="ClickHouse.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd>
<dd id="ClickHouse.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd>
<dd id="ClickHouse.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd>
<dd id="ClickHouse.Parser.CONJUNCTION" class="variable"><a href="../parser.html#Parser.CONJUNCTION">CONJUNCTION</a></dd>
<dd id="ClickHouse.Parser.ASSIGNMENT" class="variable"><a href="../parser.html#Parser.ASSIGNMENT">ASSIGNMENT</a></dd>
<dd id="ClickHouse.Parser.DISJUNCTION" class="variable"><a href="../parser.html#Parser.DISJUNCTION">DISJUNCTION</a></dd>
<dd id="ClickHouse.Parser.EQUALITY" class="variable"><a href="../parser.html#Parser.EQUALITY">EQUALITY</a></dd>
<dd id="ClickHouse.Parser.COMPARISON" class="variable"><a href="../parser.html#Parser.COMPARISON">COMPARISON</a></dd>
<dd id="ClickHouse.Parser.BITWISE" class="variable"><a href="../parser.html#Parser.BITWISE">BITWISE</a></dd>
<dd id="ClickHouse.Parser.TERM" class="variable"><a href="../parser.html#Parser.TERM">TERM</a></dd>
<dd id="ClickHouse.Parser.FACTOR" class="variable"><a href="../parser.html#Parser.FACTOR">FACTOR</a></dd>
<dd id="ClickHouse.Parser.EXPONENT" class="variable"><a href="../parser.html#Parser.EXPONENT">EXPONENT</a></dd>
<dd id="ClickHouse.Parser.TIMES" class="variable"><a href="../parser.html#Parser.TIMES">TIMES</a></dd>
<dd id="ClickHouse.Parser.TIMESTAMPS" class="variable"><a href="../parser.html#Parser.TIMESTAMPS">TIMESTAMPS</a></dd>
<dd id="ClickHouse.Parser.SET_OPERATIONS" class="variable"><a href="../parser.html#Parser.SET_OPERATIONS">SET_OPERATIONS</a></dd>
<dd id="ClickHouse.Parser.JOIN_METHODS" class="variable"><a href="../parser.html#Parser.JOIN_METHODS">JOIN_METHODS</a></dd>
<dd id="ClickHouse.Parser.JOIN_SIDES" class="variable"><a href="../parser.html#Parser.JOIN_SIDES">JOIN_SIDES</a></dd>
<dd id="ClickHouse.Parser.JOIN_HINTS" class="variable"><a href="../parser.html#Parser.JOIN_HINTS">JOIN_HINTS</a></dd>
<dd id="ClickHouse.Parser.LAMBDAS" class="variable"><a href="../parser.html#Parser.LAMBDAS">LAMBDAS</a></dd>
<dd id="ClickHouse.Parser.EXPRESSION_PARSERS" class="variable"><a href="../parser.html#Parser.EXPRESSION_PARSERS">EXPRESSION_PARSERS</a></dd>
<dd id="ClickHouse.Parser.STATEMENT_PARSERS" class="variable"><a href="../parser.html#Parser.STATEMENT_PARSERS">STATEMENT_PARSERS</a></dd>
<dd id="ClickHouse.Parser.UNARY_PARSERS" class="variable"><a href="../parser.html#Parser.UNARY_PARSERS">UNARY_PARSERS</a></dd>
<dd id="ClickHouse.Parser.STRING_PARSERS" class="variable"><a href="../parser.html#Parser.STRING_PARSERS">STRING_PARSERS</a></dd>
<dd id="ClickHouse.Parser.NUMERIC_PARSERS" class="variable"><a href="../parser.html#Parser.NUMERIC_PARSERS">NUMERIC_PARSERS</a></dd>
<dd id="ClickHouse.Parser.PRIMARY_PARSERS" class="variable"><a href="../parser.html#Parser.PRIMARY_PARSERS">PRIMARY_PARSERS</a></dd>
<dd id="ClickHouse.Parser.ALTER_ALTER_PARSERS" class="variable"><a href="../parser.html#Parser.ALTER_ALTER_PARSERS">ALTER_ALTER_PARSERS</a></dd>
<dd id="ClickHouse.Parser.INVALID_FUNC_NAME_TOKENS" class="variable"><a href="../parser.html#Parser.INVALID_FUNC_NAME_TOKENS">INVALID_FUNC_NAME_TOKENS</a></dd>
<dd id="ClickHouse.Parser.KEY_VALUE_DEFINITIONS" class="variable"><a href="../parser.html#Parser.KEY_VALUE_DEFINITIONS">KEY_VALUE_DEFINITIONS</a></dd>
<dd id="ClickHouse.Parser.SET_PARSERS" class="variable"><a href="../parser.html#Parser.SET_PARSERS">SET_PARSERS</a></dd>
<dd id="ClickHouse.Parser.SHOW_PARSERS" class="variable"><a href="../parser.html#Parser.SHOW_PARSERS">SHOW_PARSERS</a></dd>
<dd id="ClickHouse.Parser.TYPE_LITERAL_PARSERS" class="variable"><a href="../parser.html#Parser.TYPE_LITERAL_PARSERS">TYPE_LITERAL_PARSERS</a></dd>
<dd id="ClickHouse.Parser.TYPE_CONVERTERS" class="variable"><a href="../parser.html#Parser.TYPE_CONVERTERS">TYPE_CONVERTERS</a></dd>
<dd id="ClickHouse.Parser.DDL_SELECT_TOKENS" class="variable"><a href="../parser.html#Parser.DDL_SELECT_TOKENS">DDL_SELECT_TOKENS</a></dd>
<dd id="ClickHouse.Parser.PRE_VOLATILE_TOKENS" class="variable"><a href="../parser.html#Parser.PRE_VOLATILE_TOKENS">PRE_VOLATILE_TOKENS</a></dd>
<dd id="ClickHouse.Parser.TRANSACTION_KIND" class="variable"><a href="../parser.html#Parser.TRANSACTION_KIND">TRANSACTION_KIND</a></dd>
<dd id="ClickHouse.Parser.TRANSACTION_CHARACTERISTICS" class="variable"><a href="../parser.html#Parser.TRANSACTION_CHARACTERISTICS">TRANSACTION_CHARACTERISTICS</a></dd>
<dd id="ClickHouse.Parser.CONFLICT_ACTIONS" class="variable"><a href="../parser.html#Parser.CONFLICT_ACTIONS">CONFLICT_ACTIONS</a></dd>
<dd id="ClickHouse.Parser.CREATE_SEQUENCE" class="variable"><a href="../parser.html#Parser.CREATE_SEQUENCE">CREATE_SEQUENCE</a></dd>
<dd id="ClickHouse.Parser.ISOLATED_LOADING_OPTIONS" class="variable"><a href="../parser.html#Parser.ISOLATED_LOADING_OPTIONS">ISOLATED_LOADING_OPTIONS</a></dd>
<dd id="ClickHouse.Parser.USABLES" class="variable"><a href="../parser.html#Parser.USABLES">USABLES</a></dd>
<dd id="ClickHouse.Parser.CAST_ACTIONS" class="variable"><a href="../parser.html#Parser.CAST_ACTIONS">CAST_ACTIONS</a></dd>
<dd id="ClickHouse.Parser.SCHEMA_BINDING_OPTIONS" class="variable"><a href="../parser.html#Parser.SCHEMA_BINDING_OPTIONS">SCHEMA_BINDING_OPTIONS</a></dd>
<dd id="ClickHouse.Parser.PROCEDURE_OPTIONS" class="variable"><a href="../parser.html#Parser.PROCEDURE_OPTIONS">PROCEDURE_OPTIONS</a></dd>
<dd id="ClickHouse.Parser.EXECUTE_AS_OPTIONS" class="variable"><a href="../parser.html#Parser.EXECUTE_AS_OPTIONS">EXECUTE_AS_OPTIONS</a></dd>
<dd id="ClickHouse.Parser.KEY_CONSTRAINT_OPTIONS" class="variable"><a href="../parser.html#Parser.KEY_CONSTRAINT_OPTIONS">KEY_CONSTRAINT_OPTIONS</a></dd>
<dd id="ClickHouse.Parser.INSERT_ALTERNATIVES" class="variable"><a href="../parser.html#Parser.INSERT_ALTERNATIVES">INSERT_ALTERNATIVES</a></dd>
<dd id="ClickHouse.Parser.CLONE_KEYWORDS" class="variable"><a href="../parser.html#Parser.CLONE_KEYWORDS">CLONE_KEYWORDS</a></dd>
<dd id="ClickHouse.Parser.HISTORICAL_DATA_PREFIX" class="variable"><a href="../parser.html#Parser.HISTORICAL_DATA_PREFIX">HISTORICAL_DATA_PREFIX</a></dd>
<dd id="ClickHouse.Parser.HISTORICAL_DATA_KIND" class="variable"><a href="../parser.html#Parser.HISTORICAL_DATA_KIND">HISTORICAL_DATA_KIND</a></dd>
<dd id="ClickHouse.Parser.OPCLASS_FOLLOW_KEYWORDS" class="variable"><a href="../parser.html#Parser.OPCLASS_FOLLOW_KEYWORDS">OPCLASS_FOLLOW_KEYWORDS</a></dd>
<dd id="ClickHouse.Parser.OPTYPE_FOLLOW_TOKENS" class="variable"><a href="../parser.html#Parser.OPTYPE_FOLLOW_TOKENS">OPTYPE_FOLLOW_TOKENS</a></dd>
<dd id="ClickHouse.Parser.TABLE_INDEX_HINT_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_INDEX_HINT_TOKENS">TABLE_INDEX_HINT_TOKENS</a></dd>
<dd id="ClickHouse.Parser.VIEW_ATTRIBUTES" class="variable"><a href="../parser.html#Parser.VIEW_ATTRIBUTES">VIEW_ATTRIBUTES</a></dd>
<dd id="ClickHouse.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="ClickHouse.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="ClickHouse.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="ClickHouse.Parser.JSON_KEY_VALUE_SEPARATOR_TOKENS" class="variable"><a href="../parser.html#Parser.JSON_KEY_VALUE_SEPARATOR_TOKENS">JSON_KEY_VALUE_SEPARATOR_TOKENS</a></dd>
<dd id="ClickHouse.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="ClickHouse.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="ClickHouse.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="ClickHouse.Parser.NULL_TOKENS" class="variable"><a href="../parser.html#Parser.NULL_TOKENS">NULL_TOKENS</a></dd>
<dd id="ClickHouse.Parser.UNNEST_OFFSET_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UNNEST_OFFSET_ALIAS_TOKENS">UNNEST_OFFSET_ALIAS_TOKENS</a></dd>
<dd id="ClickHouse.Parser.SELECT_START_TOKENS" class="variable"><a href="../parser.html#Parser.SELECT_START_TOKENS">SELECT_START_TOKENS</a></dd>
<dd id="ClickHouse.Parser.COPY_INTO_VARLEN_OPTIONS" class="variable"><a href="../parser.html#Parser.COPY_INTO_VARLEN_OPTIONS">COPY_INTO_VARLEN_OPTIONS</a></dd>
<dd id="ClickHouse.Parser.IS_JSON_PREDICATE_KIND" class="variable"><a href="../parser.html#Parser.IS_JSON_PREDICATE_KIND">IS_JSON_PREDICATE_KIND</a></dd>
<dd id="ClickHouse.Parser.ODBC_DATETIME_LITERALS" class="variable"><a href="../parser.html#Parser.ODBC_DATETIME_LITERALS">ODBC_DATETIME_LITERALS</a></dd>
<dd id="ClickHouse.Parser.ON_CONDITION_TOKENS" class="variable"><a href="../parser.html#Parser.ON_CONDITION_TOKENS">ON_CONDITION_TOKENS</a></dd>
<dd id="ClickHouse.Parser.PRIVILEGE_FOLLOW_TOKENS" class="variable"><a href="../parser.html#Parser.PRIVILEGE_FOLLOW_TOKENS">PRIVILEGE_FOLLOW_TOKENS</a></dd>
<dd id="ClickHouse.Parser.DESCRIBE_STYLES" class="variable"><a href="../parser.html#Parser.DESCRIBE_STYLES">DESCRIBE_STYLES</a></dd>
<dd id="ClickHouse.Parser.ANALYZE_STYLES" class="variable"><a href="../parser.html#Parser.ANALYZE_STYLES">ANALYZE_STYLES</a></dd>
<dd id="ClickHouse.Parser.ANALYZE_EXPRESSION_PARSERS" class="variable"><a href="../parser.html#Parser.ANALYZE_EXPRESSION_PARSERS">ANALYZE_EXPRESSION_PARSERS</a></dd>
<dd id="ClickHouse.Parser.PARTITION_KEYWORDS" class="variable"><a href="../parser.html#Parser.PARTITION_KEYWORDS">PARTITION_KEYWORDS</a></dd>
<dd id="ClickHouse.Parser.AMBIGUOUS_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.AMBIGUOUS_ALIAS_TOKENS">AMBIGUOUS_ALIAS_TOKENS</a></dd>
<dd id="ClickHouse.Parser.OPERATION_MODIFIERS" class="variable"><a href="../parser.html#Parser.OPERATION_MODIFIERS">OPERATION_MODIFIERS</a></dd>
<dd id="ClickHouse.Parser.RECURSIVE_CTE_SEARCH_KIND" class="variable"><a href="../parser.html#Parser.RECURSIVE_CTE_SEARCH_KIND">RECURSIVE_CTE_SEARCH_KIND</a></dd>
<dd id="ClickHouse.Parser.MODIFIABLES" class="variable"><a href="../parser.html#Parser.MODIFIABLES">MODIFIABLES</a></dd>
<dd id="ClickHouse.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
<dd id="ClickHouse.Parser.PREFIXED_PIVOT_COLUMNS" class="variable"><a href="../parser.html#Parser.PREFIXED_PIVOT_COLUMNS">PREFIXED_PIVOT_COLUMNS</a></dd>
<dd id="ClickHouse.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="ClickHouse.Parser.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</a></dd>
<dd id="ClickHouse.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="ClickHouse.Parser.DEFAULT_SAMPLING_METHOD" class="variable"><a href="../parser.html#Parser.DEFAULT_SAMPLING_METHOD">DEFAULT_SAMPLING_METHOD</a></dd>
<dd id="ClickHouse.Parser.SET_REQUIRES_ASSIGNMENT_DELIMITER" class="variable"><a href="../parser.html#Parser.SET_REQUIRES_ASSIGNMENT_DELIMITER">SET_REQUIRES_ASSIGNMENT_DELIMITER</a></dd>
<dd id="ClickHouse.Parser.TRIM_PATTERN_FIRST" class="variable"><a href="../parser.html#Parser.TRIM_PATTERN_FIRST">TRIM_PATTERN_FIRST</a></dd>
<dd id="ClickHouse.Parser.STRING_ALIASES" class="variable"><a href="../parser.html#Parser.STRING_ALIASES">STRING_ALIASES</a></dd>
<dd id="ClickHouse.Parser.SET_OP_MODIFIERS" class="variable"><a href="../parser.html#Parser.SET_OP_MODIFIERS">SET_OP_MODIFIERS</a></dd>
<dd id="ClickHouse.Parser.NO_PAREN_IF_COMMANDS" class="variable"><a href="../parser.html#Parser.NO_PAREN_IF_COMMANDS">NO_PAREN_IF_COMMANDS</a></dd>
<dd id="ClickHouse.Parser.JSON_ARROWS_REQUIRE_JSON_TYPE" class="variable"><a href="../parser.html#Parser.JSON_ARROWS_REQUIRE_JSON_TYPE">JSON_ARROWS_REQUIRE_JSON_TYPE</a></dd>
<dd id="ClickHouse.Parser.COLON_IS_VARIANT_EXTRACT" class="variable"><a href="../parser.html#Parser.COLON_IS_VARIANT_EXTRACT">COLON_IS_VARIANT_EXTRACT</a></dd>
<dd id="ClickHouse.Parser.VALUES_FOLLOWED_BY_PAREN" class="variable"><a href="../parser.html#Parser.VALUES_FOLLOWED_BY_PAREN">VALUES_FOLLOWED_BY_PAREN</a></dd>
<dd id="ClickHouse.Parser.SUPPORTS_IMPLICIT_UNNEST" class="variable"><a href="../parser.html#Parser.SUPPORTS_IMPLICIT_UNNEST">SUPPORTS_IMPLICIT_UNNEST</a></dd>
<dd id="ClickHouse.Parser.SUPPORTS_PARTITION_SELECTION" class="variable"><a href="../parser.html#Parser.SUPPORTS_PARTITION_SELECTION">SUPPORTS_PARTITION_SELECTION</a></dd>
<dd id="ClickHouse.Parser.WRAPPED_TRANSFORM_COLUMN_CONSTRAINT" class="variable"><a href="../parser.html#Parser.WRAPPED_TRANSFORM_COLUMN_CONSTRAINT">WRAPPED_TRANSFORM_COLUMN_CONSTRAINT</a></dd>
<dd id="ClickHouse.Parser.error_level" class="variable"><a href="../parser.html#Parser.error_level">error_level</a></dd>
<dd id="ClickHouse.Parser.error_message_context" class="variable"><a href="../parser.html#Parser.error_message_context">error_message_context</a></dd>
<dd id="ClickHouse.Parser.max_errors" class="variable"><a href="../parser.html#Parser.max_errors">max_errors</a></dd>
<dd id="ClickHouse.Parser.dialect" class="variable"><a href="../parser.html#Parser.dialect">dialect</a></dd>
<dd id="ClickHouse.Parser.reset" class="function"><a href="../parser.html#Parser.reset">reset</a></dd>
<dd id="ClickHouse.Parser.parse" class="function"><a href="../parser.html#Parser.parse">parse</a></dd>
<dd id="ClickHouse.Parser.parse_into" class="function"><a href="../parser.html#Parser.parse_into">parse_into</a></dd>
<dd id="ClickHouse.Parser.check_errors" class="function"><a href="../parser.html#Parser.check_errors">check_errors</a></dd>
<dd id="ClickHouse.Parser.raise_error" class="function"><a href="../parser.html#Parser.raise_error">raise_error</a></dd>
<dd id="ClickHouse.Parser.expression" class="function"><a href="../parser.html#Parser.expression">expression</a></dd>
<dd id="ClickHouse.Parser.validate_expression" class="function"><a href="../parser.html#Parser.validate_expression">validate_expression</a></dd>
<dd id="ClickHouse.Parser.parse_set_operation" class="function"><a href="../parser.html#Parser.parse_set_operation">parse_set_operation</a></dd>
<dd id="ClickHouse.Parser.errors" class="variable"><a href="../parser.html#Parser.errors">errors</a></dd>
<dd id="ClickHouse.Parser.sql" class="variable"><a href="../parser.html#Parser.sql">sql</a></dd>
</div>
</dl>
</div>
</section>
<section id="ClickHouse.Generator">
<input id="ClickHouse.Generator-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">ClickHouse.Generator</span><wbr>(<span class="base"><a href="../generator.html#Generator">sqlglot.generator.Generator</a></span>):
<label class="view-source-button" for="ClickHouse.Generator-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator-954"><a href="#ClickHouse.Generator-954"><span class="linenos"> 954</span></a> <span class="k">class</span><span class="w"> </span><span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-955"><a href="#ClickHouse.Generator-955"><span class="linenos"> 955</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-956"><a href="#ClickHouse.Generator-956"><span class="linenos"> 956</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;(&quot;</span><span class="p">,</span> <span class="s2">&quot;)&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-957"><a href="#ClickHouse.Generator-957"><span class="linenos"> 957</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-958"><a href="#ClickHouse.Generator-958"><span class="linenos"> 958</span></a> <span class="n">TABLESAMPLE_REQUIRES_PARENS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-959"><a href="#ClickHouse.Generator-959"><span class="linenos"> 959</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-960"><a href="#ClickHouse.Generator-960"><span class="linenos"> 960</span></a> <span class="n">TABLESAMPLE_KEYWORDS</span> <span class="o">=</span> <span class="s2">&quot;SAMPLE&quot;</span>
</span><span id="ClickHouse.Generator-961"><a href="#ClickHouse.Generator-961"><span class="linenos"> 961</span></a> <span class="n">LAST_DAY_SUPPORTS_DATE_PART</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-962"><a href="#ClickHouse.Generator-962"><span class="linenos"> 962</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse.Generator-963"><a href="#ClickHouse.Generator-963"><span class="linenos"> 963</span></a> <span class="n">SUPPORTS_TO_NUMBER</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-964"><a href="#ClickHouse.Generator-964"><span class="linenos"> 964</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-965"><a href="#ClickHouse.Generator-965"><span class="linenos"> 965</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-966"><a href="#ClickHouse.Generator-966"><span class="linenos"> 966</span></a> <span class="n">GROUPINGS_SEP</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-967"><a href="#ClickHouse.Generator-967"><span class="linenos"> 967</span></a> <span class="n">SET_OP_MODIFIERS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-968"><a href="#ClickHouse.Generator-968"><span class="linenos"> 968</span></a> <span class="n">ARRAY_SIZE_NAME</span> <span class="o">=</span> <span class="s2">&quot;LENGTH&quot;</span>
</span><span id="ClickHouse.Generator-969"><a href="#ClickHouse.Generator-969"><span class="linenos"> 969</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="ClickHouse.Generator-970"><a href="#ClickHouse.Generator-970"><span class="linenos"> 970</span></a>
</span><span id="ClickHouse.Generator-971"><a href="#ClickHouse.Generator-971"><span class="linenos"> 971</span></a> <span class="n">STRING_TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Generator-972"><a href="#ClickHouse.Generator-972"><span class="linenos"> 972</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-973"><a href="#ClickHouse.Generator-973"><span class="linenos"> 973</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-974"><a href="#ClickHouse.Generator-974"><span class="linenos"> 974</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-975"><a href="#ClickHouse.Generator-975"><span class="linenos"> 975</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-976"><a href="#ClickHouse.Generator-976"><span class="linenos"> 976</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-977"><a href="#ClickHouse.Generator-977"><span class="linenos"> 977</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-978"><a href="#ClickHouse.Generator-978"><span class="linenos"> 978</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-979"><a href="#ClickHouse.Generator-979"><span class="linenos"> 979</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-980"><a href="#ClickHouse.Generator-980"><span class="linenos"> 980</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-981"><a href="#ClickHouse.Generator-981"><span class="linenos"> 981</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-982"><a href="#ClickHouse.Generator-982"><span class="linenos"> 982</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;String&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-983"><a href="#ClickHouse.Generator-983"><span class="linenos"> 983</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Generator-984"><a href="#ClickHouse.Generator-984"><span class="linenos"> 984</span></a>
</span><span id="ClickHouse.Generator-985"><a href="#ClickHouse.Generator-985"><span class="linenos"> 985</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Generator-986"><a href="#ClickHouse.Generator-986"><span class="linenos"> 986</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-987"><a href="#ClickHouse.Generator-987"><span class="linenos"> 987</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-988"><a href="#ClickHouse.Generator-988"><span class="linenos"> 988</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-989"><a href="#ClickHouse.Generator-989"><span class="linenos"> 989</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Generator-990"><a href="#ClickHouse.Generator-990"><span class="linenos"> 990</span></a>
</span><span id="ClickHouse.Generator-991"><a href="#ClickHouse.Generator-991"><span class="linenos"> 991</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Generator-992"><a href="#ClickHouse.Generator-992"><span class="linenos"> 992</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-993"><a href="#ClickHouse.Generator-993"><span class="linenos"> 993</span></a> <span class="o">**</span><span class="n">STRING_TYPE_MAPPING</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-994"><a href="#ClickHouse.Generator-994"><span class="linenos"> 994</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">:</span> <span class="s2">&quot;Array&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-995"><a href="#ClickHouse.Generator-995"><span class="linenos"> 995</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">&quot;Bool&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-996"><a href="#ClickHouse.Generator-996"><span class="linenos"> 996</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">&quot;Int64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-997"><a href="#ClickHouse.Generator-997"><span class="linenos"> 997</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE32</span><span class="p">:</span> <span class="s2">&quot;Date32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-998"><a href="#ClickHouse.Generator-998"><span class="linenos"> 998</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-999"><a href="#ClickHouse.Generator-999"><span class="linenos"> 999</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME2</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1000"><a href="#ClickHouse.Generator-1000"><span class="linenos">1000</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLDATETIME</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1001"><a href="#ClickHouse.Generator-1001"><span class="linenos">1001</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">:</span> <span class="s2">&quot;DateTime64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1002"><a href="#ClickHouse.Generator-1002"><span class="linenos">1002</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">&quot;Decimal&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1003"><a href="#ClickHouse.Generator-1003"><span class="linenos">1003</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL32</span><span class="p">:</span> <span class="s2">&quot;Decimal32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1004"><a href="#ClickHouse.Generator-1004"><span class="linenos">1004</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL64</span><span class="p">:</span> <span class="s2">&quot;Decimal64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1005"><a href="#ClickHouse.Generator-1005"><span class="linenos">1005</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL128</span><span class="p">:</span> <span class="s2">&quot;Decimal128&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1006"><a href="#ClickHouse.Generator-1006"><span class="linenos">1006</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL256</span><span class="p">:</span> <span class="s2">&quot;Decimal256&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1007"><a href="#ClickHouse.Generator-1007"><span class="linenos">1007</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1008"><a href="#ClickHouse.Generator-1008"><span class="linenos">1008</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">:</span> <span class="s2">&quot;DateTime&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1009"><a href="#ClickHouse.Generator-1009"><span class="linenos">1009</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;Float64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1010"><a href="#ClickHouse.Generator-1010"><span class="linenos">1010</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM</span><span class="p">:</span> <span class="s2">&quot;Enum&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1011"><a href="#ClickHouse.Generator-1011"><span class="linenos">1011</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">:</span> <span class="s2">&quot;Enum8&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1012"><a href="#ClickHouse.Generator-1012"><span class="linenos">1012</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">:</span> <span class="s2">&quot;Enum16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1013"><a href="#ClickHouse.Generator-1013"><span class="linenos">1013</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">:</span> <span class="s2">&quot;FixedString&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1014"><a href="#ClickHouse.Generator-1014"><span class="linenos">1014</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;Float32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1015"><a href="#ClickHouse.Generator-1015"><span class="linenos">1015</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">:</span> <span class="s2">&quot;Int32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1016"><a href="#ClickHouse.Generator-1016"><span class="linenos">1016</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">:</span> <span class="s2">&quot;Int32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1017"><a href="#ClickHouse.Generator-1017"><span class="linenos">1017</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT128</span><span class="p">:</span> <span class="s2">&quot;Int128&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1018"><a href="#ClickHouse.Generator-1018"><span class="linenos">1018</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INT256</span><span class="p">:</span> <span class="s2">&quot;Int256&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1019"><a href="#ClickHouse.Generator-1019"><span class="linenos">1019</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">:</span> <span class="s2">&quot;LowCardinality&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1020"><a href="#ClickHouse.Generator-1020"><span class="linenos">1020</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">:</span> <span class="s2">&quot;Map&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1021"><a href="#ClickHouse.Generator-1021"><span class="linenos">1021</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NESTED</span><span class="p">:</span> <span class="s2">&quot;Nested&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1022"><a href="#ClickHouse.Generator-1022"><span class="linenos">1022</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">&quot;Int16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1023"><a href="#ClickHouse.Generator-1023"><span class="linenos">1023</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">:</span> <span class="s2">&quot;Tuple&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1024"><a href="#ClickHouse.Generator-1024"><span class="linenos">1024</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">&quot;Int8&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1025"><a href="#ClickHouse.Generator-1025"><span class="linenos">1025</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">:</span> <span class="s2">&quot;UInt64&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1026"><a href="#ClickHouse.Generator-1026"><span class="linenos">1026</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UInt32&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1027"><a href="#ClickHouse.Generator-1027"><span class="linenos">1027</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT128</span><span class="p">:</span> <span class="s2">&quot;UInt128&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1028"><a href="#ClickHouse.Generator-1028"><span class="linenos">1028</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT256</span><span class="p">:</span> <span class="s2">&quot;UInt256&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1029"><a href="#ClickHouse.Generator-1029"><span class="linenos">1029</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">:</span> <span class="s2">&quot;UInt16&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1030"><a href="#ClickHouse.Generator-1030"><span class="linenos">1030</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">:</span> <span class="s2">&quot;UInt8&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1031"><a href="#ClickHouse.Generator-1031"><span class="linenos">1031</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">IPV4</span><span class="p">:</span> <span class="s2">&quot;IPv4&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1032"><a href="#ClickHouse.Generator-1032"><span class="linenos">1032</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">IPV6</span><span class="p">:</span> <span class="s2">&quot;IPv6&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1033"><a href="#ClickHouse.Generator-1033"><span class="linenos">1033</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POINT</span><span class="p">:</span> <span class="s2">&quot;Point&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1034"><a href="#ClickHouse.Generator-1034"><span class="linenos">1034</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">RING</span><span class="p">:</span> <span class="s2">&quot;Ring&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1035"><a href="#ClickHouse.Generator-1035"><span class="linenos">1035</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">:</span> <span class="s2">&quot;LineString&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1036"><a href="#ClickHouse.Generator-1036"><span class="linenos">1036</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">:</span> <span class="s2">&quot;MultiLineString&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1037"><a href="#ClickHouse.Generator-1037"><span class="linenos">1037</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">:</span> <span class="s2">&quot;Polygon&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1038"><a href="#ClickHouse.Generator-1038"><span class="linenos">1038</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">:</span> <span class="s2">&quot;MultiPolygon&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1039"><a href="#ClickHouse.Generator-1039"><span class="linenos">1039</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">:</span> <span class="s2">&quot;AggregateFunction&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1040"><a href="#ClickHouse.Generator-1040"><span class="linenos">1040</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">:</span> <span class="s2">&quot;SimpleAggregateFunction&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1041"><a href="#ClickHouse.Generator-1041"><span class="linenos">1041</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DYNAMIC</span><span class="p">:</span> <span class="s2">&quot;Dynamic&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1042"><a href="#ClickHouse.Generator-1042"><span class="linenos">1042</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Generator-1043"><a href="#ClickHouse.Generator-1043"><span class="linenos">1043</span></a>
</span><span id="ClickHouse.Generator-1044"><a href="#ClickHouse.Generator-1044"><span class="linenos">1044</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Generator-1045"><a href="#ClickHouse.Generator-1045"><span class="linenos">1045</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1046"><a href="#ClickHouse.Generator-1046"><span class="linenos">1046</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;any&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1047"><a href="#ClickHouse.Generator-1047"><span class="linenos">1047</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;uniq&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1048"><a href="#ClickHouse.Generator-1048"><span class="linenos">1048</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arrayConcat&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1049"><a href="#ClickHouse.Generator-1049"><span class="linenos">1049</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;arrayFilter&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1050"><a href="#ClickHouse.Generator-1050"><span class="linenos">1050</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arraySum&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1051"><a href="#ClickHouse.Generator-1051"><span class="linenos">1051</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;argMax&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1052"><a href="#ClickHouse.Generator-1052"><span class="linenos">1052</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;argMin&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1053"><a href="#ClickHouse.Generator-1053"><span class="linenos">1053</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1054"><a href="#ClickHouse.Generator-1054"><span class="linenos">1054</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CastToStrType</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CAST&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1055"><a href="#ClickHouse.Generator-1055"><span class="linenos">1055</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;countIf&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1056"><a href="#ClickHouse.Generator-1056"><span class="linenos">1056</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1057"><a href="#ClickHouse.Generator-1057"><span class="linenos">1057</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CODEC(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s1">&#39;this&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1058"><a href="#ClickHouse.Generator-1058"><span class="linenos">1058</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1059"><a href="#ClickHouse.Generator-1059"><span class="linenos">1059</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="s1">&#39;MATERIALIZED&#39;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;persisted&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">&#39;ALIAS&#39;</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1060"><a href="#ClickHouse.Generator-1060"><span class="linenos">1060</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1061"><a href="#ClickHouse.Generator-1061"><span class="linenos">1061</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1062"><a href="#ClickHouse.Generator-1062"><span class="linenos">1062</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1063"><a href="#ClickHouse.Generator-1063"><span class="linenos">1063</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;toDate&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1064"><a href="#ClickHouse.Generator-1064"><span class="linenos">1064</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_SUB&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1065"><a href="#ClickHouse.Generator-1065"><span class="linenos">1065</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;arrayJoin&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1066"><a href="#ClickHouse.Generator-1066"><span class="linenos">1066</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Final</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> FINAL&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1067"><a href="#ClickHouse.Generator-1067"><span class="linenos">1067</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;isNaN&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1068"><a href="#ClickHouse.Generator-1068"><span class="linenos">1068</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONCast</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">.:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;to&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1069"><a href="#ClickHouse.Generator-1069"><span class="linenos">1069</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="s2">&quot;JSONExtractString&quot;</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1070"><a href="#ClickHouse.Generator-1070"><span class="linenos">1070</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="s2">&quot;JSONExtractString&quot;</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1071"><a href="#ClickHouse.Generator-1071"><span class="linenos">1071</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1072"><a href="#ClickHouse.Generator-1072"><span class="linenos">1072</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1073"><a href="#ClickHouse.Generator-1073"><span class="linenos">1073</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">:</span> <span class="n">length_or_char_length_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1074"><a href="#ClickHouse.Generator-1074"><span class="linenos">1074</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1075"><a href="#ClickHouse.Generator-1075"><span class="linenos">1075</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Median</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;median&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1076"><a href="#ClickHouse.Generator-1076"><span class="linenos">1076</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Nullif</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;nullIf&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1077"><a href="#ClickHouse.Generator-1077"><span class="linenos">1077</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1078"><a href="#ClickHouse.Generator-1078"><span class="linenos">1078</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1079"><a href="#ClickHouse.Generator-1079"><span class="linenos">1079</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Quantile</span><span class="p">:</span> <span class="n">_quantile_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1080"><a href="#ClickHouse.Generator-1080"><span class="linenos">1080</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1081"><a href="#ClickHouse.Generator-1081"><span class="linenos">1081</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;randCanonical&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1082"><a href="#ClickHouse.Generator-1082"><span class="linenos">1082</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StartsWith</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;startsWith&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1083"><a href="#ClickHouse.Generator-1083"><span class="linenos">1083</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">strposition_sql</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1084"><a href="#ClickHouse.Generator-1084"><span class="linenos">1084</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1085"><a href="#ClickHouse.Generator-1085"><span class="linenos">1085</span></a> <span class="n">e</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1086"><a href="#ClickHouse.Generator-1086"><span class="linenos">1086</span></a> <span class="n">func_name</span><span class="o">=</span><span class="s2">&quot;POSITION&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1087"><a href="#ClickHouse.Generator-1087"><span class="linenos">1087</span></a> <span class="n">supports_position</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1088"><a href="#ClickHouse.Generator-1088"><span class="linenos">1088</span></a> <span class="n">use_ansi_position</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1089"><a href="#ClickHouse.Generator-1089"><span class="linenos">1089</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator-1090"><a href="#ClickHouse.Generator-1090"><span class="linenos">1090</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1091"><a href="#ClickHouse.Generator-1091"><span class="linenos">1091</span></a> <span class="s2">&quot;formatDateTime&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;zone&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1092"><a href="#ClickHouse.Generator-1092"><span class="linenos">1092</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator-1093"><a href="#ClickHouse.Generator-1093"><span class="linenos">1093</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">_timestrtotime_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1094"><a href="#ClickHouse.Generator-1094"><span class="linenos">1094</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;TIMESTAMP_ADD&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1095"><a href="#ClickHouse.Generator-1095"><span class="linenos">1095</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_datetime_delta_sql</span><span class="p">(</span><span class="s2">&quot;TIMESTAMP_SUB&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1096"><a href="#ClickHouse.Generator-1096"><span class="linenos">1096</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1097"><a href="#ClickHouse.Generator-1097"><span class="linenos">1097</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;xor&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1098"><a href="#ClickHouse.Generator-1098"><span class="linenos">1098</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MD5Digest</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MD5&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1099"><a href="#ClickHouse.Generator-1099"><span class="linenos">1099</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MD5</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;LOWER&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;HEX&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;MD5&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">))),</span>
</span><span id="ClickHouse.Generator-1100"><a href="#ClickHouse.Generator-1100"><span class="linenos">1100</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SHA</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SHA1&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1101"><a href="#ClickHouse.Generator-1101"><span class="linenos">1101</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SHA2</span><span class="p">:</span> <span class="n">sha256_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1102"><a href="#ClickHouse.Generator-1102"><span class="linenos">1102</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1103"><a href="#ClickHouse.Generator-1103"><span class="linenos">1103</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1104"><a href="#ClickHouse.Generator-1104"><span class="linenos">1104</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">default_trim_type</span><span class="o">=</span><span class="s2">&quot;BOTH&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1105"><a href="#ClickHouse.Generator-1105"><span class="linenos">1105</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;varSamp&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1106"><a href="#ClickHouse.Generator-1106"><span class="linenos">1106</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">naked_property</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1107"><a href="#ClickHouse.Generator-1107"><span class="linenos">1107</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Stddev</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;stddevSamp&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1108"><a href="#ClickHouse.Generator-1108"><span class="linenos">1108</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Chr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CHAR&quot;</span><span class="p">),</span>
</span><span id="ClickHouse.Generator-1109"><a href="#ClickHouse.Generator-1109"><span class="linenos">1109</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lag</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1110"><a href="#ClickHouse.Generator-1110"><span class="linenos">1110</span></a> <span class="s2">&quot;lagInFrame&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;offset&quot;</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1111"><a href="#ClickHouse.Generator-1111"><span class="linenos">1111</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator-1112"><a href="#ClickHouse.Generator-1112"><span class="linenos">1112</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lead</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1113"><a href="#ClickHouse.Generator-1113"><span class="linenos">1113</span></a> <span class="s2">&quot;leadInFrame&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;offset&quot;</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1114"><a href="#ClickHouse.Generator-1114"><span class="linenos">1114</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator-1115"><a href="#ClickHouse.Generator-1115"><span class="linenos">1115</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="p">:</span> <span class="n">unsupported_args</span><span class="p">(</span><span class="s2">&quot;ins_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;del_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;sub_cost&quot;</span><span class="p">,</span> <span class="s2">&quot;max_dist&quot;</span><span class="p">)(</span>
</span><span id="ClickHouse.Generator-1116"><a href="#ClickHouse.Generator-1116"><span class="linenos">1116</span></a> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;editDistance&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1117"><a href="#ClickHouse.Generator-1117"><span class="linenos">1117</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator-1118"><a href="#ClickHouse.Generator-1118"><span class="linenos">1118</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Generator-1119"><a href="#ClickHouse.Generator-1119"><span class="linenos">1119</span></a>
</span><span id="ClickHouse.Generator-1120"><a href="#ClickHouse.Generator-1120"><span class="linenos">1120</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Generator-1121"><a href="#ClickHouse.Generator-1121"><span class="linenos">1121</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1122"><a href="#ClickHouse.Generator-1122"><span class="linenos">1122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1123"><a href="#ClickHouse.Generator-1123"><span class="linenos">1123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1124"><a href="#ClickHouse.Generator-1124"><span class="linenos">1124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1125"><a href="#ClickHouse.Generator-1125"><span class="linenos">1125</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1126"><a href="#ClickHouse.Generator-1126"><span class="linenos">1126</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Generator-1127"><a href="#ClickHouse.Generator-1127"><span class="linenos">1127</span></a>
</span><span id="ClickHouse.Generator-1128"><a href="#ClickHouse.Generator-1128"><span class="linenos">1128</span></a> <span class="c1"># There&#39;s no list in docs, but it can be found in Clickhouse code</span>
</span><span id="ClickHouse.Generator-1129"><a href="#ClickHouse.Generator-1129"><span class="linenos">1129</span></a> <span class="c1"># see `ClickHouse/src/Parsers/ParserCreate*.cpp`</span>
</span><span id="ClickHouse.Generator-1130"><a href="#ClickHouse.Generator-1130"><span class="linenos">1130</span></a> <span class="n">ON_CLUSTER_TARGETS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Generator-1131"><a href="#ClickHouse.Generator-1131"><span class="linenos">1131</span></a> <span class="s2">&quot;SCHEMA&quot;</span><span class="p">,</span> <span class="c1"># Transpiled CREATE SCHEMA may have OnCluster property set</span>
</span><span id="ClickHouse.Generator-1132"><a href="#ClickHouse.Generator-1132"><span class="linenos">1132</span></a> <span class="s2">&quot;DATABASE&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1133"><a href="#ClickHouse.Generator-1133"><span class="linenos">1133</span></a> <span class="s2">&quot;TABLE&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1134"><a href="#ClickHouse.Generator-1134"><span class="linenos">1134</span></a> <span class="s2">&quot;VIEW&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1135"><a href="#ClickHouse.Generator-1135"><span class="linenos">1135</span></a> <span class="s2">&quot;DICTIONARY&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1136"><a href="#ClickHouse.Generator-1136"><span class="linenos">1136</span></a> <span class="s2">&quot;INDEX&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1137"><a href="#ClickHouse.Generator-1137"><span class="linenos">1137</span></a> <span class="s2">&quot;FUNCTION&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1138"><a href="#ClickHouse.Generator-1138"><span class="linenos">1138</span></a> <span class="s2">&quot;NAMED COLLECTION&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1139"><a href="#ClickHouse.Generator-1139"><span class="linenos">1139</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Generator-1140"><a href="#ClickHouse.Generator-1140"><span class="linenos">1140</span></a>
</span><span id="ClickHouse.Generator-1141"><a href="#ClickHouse.Generator-1141"><span class="linenos">1141</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/data-types/nullable</span>
</span><span id="ClickHouse.Generator-1142"><a href="#ClickHouse.Generator-1142"><span class="linenos">1142</span></a> <span class="n">NON_NULLABLE_TYPES</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="ClickHouse.Generator-1143"><a href="#ClickHouse.Generator-1143"><span class="linenos">1143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1144"><a href="#ClickHouse.Generator-1144"><span class="linenos">1144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1145"><a href="#ClickHouse.Generator-1145"><span class="linenos">1145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1146"><a href="#ClickHouse.Generator-1146"><span class="linenos">1146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POINT</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1147"><a href="#ClickHouse.Generator-1147"><span class="linenos">1147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">RING</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1148"><a href="#ClickHouse.Generator-1148"><span class="linenos">1148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1149"><a href="#ClickHouse.Generator-1149"><span class="linenos">1149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTILINESTRING</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1150"><a href="#ClickHouse.Generator-1150"><span class="linenos">1150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">POLYGON</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1151"><a href="#ClickHouse.Generator-1151"><span class="linenos">1151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MULTIPOLYGON</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1152"><a href="#ClickHouse.Generator-1152"><span class="linenos">1152</span></a> <span class="p">}</span>
</span><span id="ClickHouse.Generator-1153"><a href="#ClickHouse.Generator-1153"><span class="linenos">1153</span></a>
</span><span id="ClickHouse.Generator-1154"><a href="#ClickHouse.Generator-1154"><span class="linenos">1154</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">strtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1155"><a href="#ClickHouse.Generator-1155"><span class="linenos">1155</span></a> <span class="n">strtodate_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1156"><a href="#ClickHouse.Generator-1156"><span class="linenos">1156</span></a>
</span><span id="ClickHouse.Generator-1157"><a href="#ClickHouse.Generator-1157"><span class="linenos">1157</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1158"><a href="#ClickHouse.Generator-1158"><span class="linenos">1158</span></a> <span class="c1"># StrToDate returns DATEs in other dialects (eg. postgres), so</span>
</span><span id="ClickHouse.Generator-1159"><a href="#ClickHouse.Generator-1159"><span class="linenos">1159</span></a> <span class="c1"># this branch aims to improve the transpilation to clickhouse</span>
</span><span id="ClickHouse.Generator-1160"><a href="#ClickHouse.Generator-1160"><span class="linenos">1160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;DATE&quot;</span><span class="p">))</span>
</span><span id="ClickHouse.Generator-1161"><a href="#ClickHouse.Generator-1161"><span class="linenos">1161</span></a>
</span><span id="ClickHouse.Generator-1162"><a href="#ClickHouse.Generator-1162"><span class="linenos">1162</span></a> <span class="k">return</span> <span class="n">strtodate_sql</span>
</span><span id="ClickHouse.Generator-1163"><a href="#ClickHouse.Generator-1163"><span class="linenos">1163</span></a>
</span><span id="ClickHouse.Generator-1164"><a href="#ClickHouse.Generator-1164"><span class="linenos">1164</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1165"><a href="#ClickHouse.Generator-1165"><span class="linenos">1165</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="ClickHouse.Generator-1166"><a href="#ClickHouse.Generator-1166"><span class="linenos">1166</span></a>
</span><span id="ClickHouse.Generator-1167"><a href="#ClickHouse.Generator-1167"><span class="linenos">1167</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="s2">&quot;datetime&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1168"><a href="#ClickHouse.Generator-1168"><span class="linenos">1168</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1169"><a href="#ClickHouse.Generator-1169"><span class="linenos">1169</span></a>
</span><span id="ClickHouse.Generator-1170"><a href="#ClickHouse.Generator-1170"><span class="linenos">1170</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="n">safe_prefix</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1171"><a href="#ClickHouse.Generator-1171"><span class="linenos">1171</span></a>
</span><span id="ClickHouse.Generator-1172"><a href="#ClickHouse.Generator-1172"><span class="linenos">1172</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1173"><a href="#ClickHouse.Generator-1173"><span class="linenos">1173</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span>
</span><span id="ClickHouse.Generator-1174"><a href="#ClickHouse.Generator-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dtype</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1175"><a href="#ClickHouse.Generator-1175"><span class="linenos">1175</span></a> <span class="c1"># Casting x into Nullable(T) appears to behave similarly to TRY_CAST(x AS T)</span>
</span><span id="ClickHouse.Generator-1176"><a href="#ClickHouse.Generator-1176"><span class="linenos">1176</span></a> <span class="n">dtype</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1177"><a href="#ClickHouse.Generator-1177"><span class="linenos">1177</span></a>
</span><span id="ClickHouse.Generator-1178"><a href="#ClickHouse.Generator-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1179"><a href="#ClickHouse.Generator-1179"><span class="linenos">1179</span></a>
</span><span id="ClickHouse.Generator-1180"><a href="#ClickHouse.Generator-1180"><span class="linenos">1180</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_jsonpathsubscript_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1181"><a href="#ClickHouse.Generator-1181"><span class="linenos">1181</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1182"><a href="#ClickHouse.Generator-1182"><span class="linenos">1182</span></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_int</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="ClickHouse.Generator-1183"><a href="#ClickHouse.Generator-1183"><span class="linenos">1183</span></a>
</span><span id="ClickHouse.Generator-1184"><a href="#ClickHouse.Generator-1184"><span class="linenos">1184</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1185"><a href="#ClickHouse.Generator-1185"><span class="linenos">1185</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1186"><a href="#ClickHouse.Generator-1186"><span class="linenos">1186</span></a>
</span><span id="ClickHouse.Generator-1187"><a href="#ClickHouse.Generator-1187"><span class="linenos">1187</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_any_to_has</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1188"><a href="#ClickHouse.Generator-1188"><span class="linenos">1188</span></a> <span class="bp">self</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1189"><a href="#ClickHouse.Generator-1189"><span class="linenos">1189</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1190"><a href="#ClickHouse.Generator-1190"><span class="linenos">1190</span></a> <span class="n">default</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">],</span> <span class="nb">str</span><span class="p">],</span>
</span><span id="ClickHouse.Generator-1191"><a href="#ClickHouse.Generator-1191"><span class="linenos">1191</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1192"><a href="#ClickHouse.Generator-1192"><span class="linenos">1192</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1193"><a href="#ClickHouse.Generator-1193"><span class="linenos">1193</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1194"><a href="#ClickHouse.Generator-1194"><span class="linenos">1194</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">left</span>
</span><span id="ClickHouse.Generator-1195"><a href="#ClickHouse.Generator-1195"><span class="linenos">1195</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">right</span>
</span><span id="ClickHouse.Generator-1196"><a href="#ClickHouse.Generator-1196"><span class="linenos">1196</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1197"><a href="#ClickHouse.Generator-1197"><span class="linenos">1197</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">right</span>
</span><span id="ClickHouse.Generator-1198"><a href="#ClickHouse.Generator-1198"><span class="linenos">1198</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">left</span>
</span><span id="ClickHouse.Generator-1199"><a href="#ClickHouse.Generator-1199"><span class="linenos">1199</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1200"><a href="#ClickHouse.Generator-1200"><span class="linenos">1200</span></a> <span class="k">return</span> <span class="n">default</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1201"><a href="#ClickHouse.Generator-1201"><span class="linenos">1201</span></a>
</span><span id="ClickHouse.Generator-1202"><a href="#ClickHouse.Generator-1202"><span class="linenos">1202</span></a> <span class="k">return</span> <span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;has&quot;</span><span class="p">,</span> <span class="n">arr</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">(),</span> <span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1203"><a href="#ClickHouse.Generator-1203"><span class="linenos">1203</span></a>
</span><span id="ClickHouse.Generator-1204"><a href="#ClickHouse.Generator-1204"><span class="linenos">1204</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1205"><a href="#ClickHouse.Generator-1205"><span class="linenos">1205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">eq_sql</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1206"><a href="#ClickHouse.Generator-1206"><span class="linenos">1206</span></a>
</span><span id="ClickHouse.Generator-1207"><a href="#ClickHouse.Generator-1207"><span class="linenos">1207</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1208"><a href="#ClickHouse.Generator-1208"><span class="linenos">1208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">neq_sql</span><span class="p">,</span> <span class="s2">&quot;NOT &quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1209"><a href="#ClickHouse.Generator-1209"><span class="linenos">1209</span></a>
</span><span id="ClickHouse.Generator-1210"><a href="#ClickHouse.Generator-1210"><span class="linenos">1210</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">regexpilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1211"><a href="#ClickHouse.Generator-1211"><span class="linenos">1211</span></a> <span class="c1"># Manually add a flag to make the search case-insensitive</span>
</span><span id="ClickHouse.Generator-1212"><a href="#ClickHouse.Generator-1212"><span class="linenos">1212</span></a> <span class="n">regex</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;CONCAT&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;(?i)&#39;&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1213"><a href="#ClickHouse.Generator-1213"><span class="linenos">1213</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">regex</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1214"><a href="#ClickHouse.Generator-1214"><span class="linenos">1214</span></a>
</span><span id="ClickHouse.Generator-1215"><a href="#ClickHouse.Generator-1215"><span class="linenos">1215</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1216"><a href="#ClickHouse.Generator-1216"><span class="linenos">1216</span></a> <span class="c1"># String is the standard ClickHouse type, every other variant is just an alias.</span>
</span><span id="ClickHouse.Generator-1217"><a href="#ClickHouse.Generator-1217"><span class="linenos">1217</span></a> <span class="c1"># Additionally, any supplied length parameter will be ignored.</span>
</span><span id="ClickHouse.Generator-1218"><a href="#ClickHouse.Generator-1218"><span class="linenos">1218</span></a> <span class="c1">#</span>
</span><span id="ClickHouse.Generator-1219"><a href="#ClickHouse.Generator-1219"><span class="linenos">1219</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/data-types/string</span>
</span><span id="ClickHouse.Generator-1220"><a href="#ClickHouse.Generator-1220"><span class="linenos">1220</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_TYPE_MAPPING</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1221"><a href="#ClickHouse.Generator-1221"><span class="linenos">1221</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="s2">&quot;String&quot;</span>
</span><span id="ClickHouse.Generator-1222"><a href="#ClickHouse.Generator-1222"><span class="linenos">1222</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1223"><a href="#ClickHouse.Generator-1223"><span class="linenos">1223</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1224"><a href="#ClickHouse.Generator-1224"><span class="linenos">1224</span></a>
</span><span id="ClickHouse.Generator-1225"><a href="#ClickHouse.Generator-1225"><span class="linenos">1225</span></a> <span class="c1"># This section changes the type to `Nullable(...)` if the following conditions hold:</span>
</span><span id="ClickHouse.Generator-1226"><a href="#ClickHouse.Generator-1226"><span class="linenos">1226</span></a> <span class="c1"># - It&#39;s marked as nullable - this ensures we won&#39;t wrap ClickHouse types with `Nullable`</span>
</span><span id="ClickHouse.Generator-1227"><a href="#ClickHouse.Generator-1227"><span class="linenos">1227</span></a> <span class="c1"># and change their semantics</span>
</span><span id="ClickHouse.Generator-1228"><a href="#ClickHouse.Generator-1228"><span class="linenos">1228</span></a> <span class="c1"># - It&#39;s not the key type of a `Map`. This is because ClickHouse enforces the following</span>
</span><span id="ClickHouse.Generator-1229"><a href="#ClickHouse.Generator-1229"><span class="linenos">1229</span></a> <span class="c1"># constraint: &quot;Type of Map key must be a type, that can be represented by integer or</span>
</span><span id="ClickHouse.Generator-1230"><a href="#ClickHouse.Generator-1230"><span class="linenos">1230</span></a> <span class="c1"># String or FixedString (possibly LowCardinality) or UUID or IPv6&quot;</span>
</span><span id="ClickHouse.Generator-1231"><a href="#ClickHouse.Generator-1231"><span class="linenos">1231</span></a> <span class="c1"># - It&#39;s not a composite type, e.g. `Nullable(Array(...))` is not a valid type</span>
</span><span id="ClickHouse.Generator-1232"><a href="#ClickHouse.Generator-1232"><span class="linenos">1232</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
</span><span id="ClickHouse.Generator-1233"><a href="#ClickHouse.Generator-1233"><span class="linenos">1233</span></a> <span class="n">nullable</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1234"><a href="#ClickHouse.Generator-1234"><span class="linenos">1234</span></a> <span class="k">if</span> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">True</span> <span class="ow">or</span> <span class="p">(</span>
</span><span id="ClickHouse.Generator-1235"><a href="#ClickHouse.Generator-1235"><span class="linenos">1235</span></a> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">None</span>
</span><span id="ClickHouse.Generator-1236"><a href="#ClickHouse.Generator-1236"><span class="linenos">1236</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span>
</span><span id="ClickHouse.Generator-1237"><a href="#ClickHouse.Generator-1237"><span class="linenos">1237</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1238"><a href="#ClickHouse.Generator-1238"><span class="linenos">1238</span></a> <span class="ow">and</span> <span class="n">parent</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1239"><a href="#ClickHouse.Generator-1239"><span class="linenos">1239</span></a> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">index</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1240"><a href="#ClickHouse.Generator-1240"><span class="linenos">1240</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Generator-1241"><a href="#ClickHouse.Generator-1241"><span class="linenos">1241</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1242"><a href="#ClickHouse.Generator-1242"><span class="linenos">1242</span></a> <span class="p">):</span>
</span><span id="ClickHouse.Generator-1243"><a href="#ClickHouse.Generator-1243"><span class="linenos">1243</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Nullable(</span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">)&quot;</span>
</span><span id="ClickHouse.Generator-1244"><a href="#ClickHouse.Generator-1244"><span class="linenos">1244</span></a>
</span><span id="ClickHouse.Generator-1245"><a href="#ClickHouse.Generator-1245"><span class="linenos">1245</span></a> <span class="k">return</span> <span class="n">dtype</span>
</span><span id="ClickHouse.Generator-1246"><a href="#ClickHouse.Generator-1246"><span class="linenos">1246</span></a>
</span><span id="ClickHouse.Generator-1247"><a href="#ClickHouse.Generator-1247"><span class="linenos">1247</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1248"><a href="#ClickHouse.Generator-1248"><span class="linenos">1248</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scalar&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1249"><a href="#ClickHouse.Generator-1249"><span class="linenos">1249</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1250"><a href="#ClickHouse.Generator-1250"><span class="linenos">1250</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1251"><a href="#ClickHouse.Generator-1251"><span class="linenos">1251</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1252"><a href="#ClickHouse.Generator-1252"><span class="linenos">1252</span></a>
</span><span id="ClickHouse.Generator-1253"><a href="#ClickHouse.Generator-1253"><span class="linenos">1253</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cte_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1254"><a href="#ClickHouse.Generator-1254"><span class="linenos">1254</span></a>
</span><span id="ClickHouse.Generator-1255"><a href="#ClickHouse.Generator-1255"><span class="linenos">1255</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">after_limit_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
</span><span id="ClickHouse.Generator-1256"><a href="#ClickHouse.Generator-1256"><span class="linenos">1256</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">after_limit_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span>
</span><span id="ClickHouse.Generator-1257"><a href="#ClickHouse.Generator-1257"><span class="linenos">1257</span></a> <span class="p">(</span>
</span><span id="ClickHouse.Generator-1258"><a href="#ClickHouse.Generator-1258"><span class="linenos">1258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;SETTINGS &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;settings&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1259"><a href="#ClickHouse.Generator-1259"><span class="linenos">1259</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;settings&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1260"><a href="#ClickHouse.Generator-1260"><span class="linenos">1260</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1261"><a href="#ClickHouse.Generator-1261"><span class="linenos">1261</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator-1262"><a href="#ClickHouse.Generator-1262"><span class="linenos">1262</span></a> <span class="p">(</span>
</span><span id="ClickHouse.Generator-1263"><a href="#ClickHouse.Generator-1263"><span class="linenos">1263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;FORMAT &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1264"><a href="#ClickHouse.Generator-1264"><span class="linenos">1264</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1265"><a href="#ClickHouse.Generator-1265"><span class="linenos">1265</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1266"><a href="#ClickHouse.Generator-1266"><span class="linenos">1266</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator-1267"><a href="#ClickHouse.Generator-1267"><span class="linenos">1267</span></a> <span class="p">]</span>
</span><span id="ClickHouse.Generator-1268"><a href="#ClickHouse.Generator-1268"><span class="linenos">1268</span></a>
</span><span id="ClickHouse.Generator-1269"><a href="#ClickHouse.Generator-1269"><span class="linenos">1269</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1270"><a href="#ClickHouse.Generator-1270"><span class="linenos">1270</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">{{</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;kind&#39;</span><span class="p">)</span><span class="si">}</span><span class="se">}}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1271"><a href="#ClickHouse.Generator-1271"><span class="linenos">1271</span></a>
</span><span id="ClickHouse.Generator-1272"><a href="#ClickHouse.Generator-1272"><span class="linenos">1272</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">oncluster_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1273"><a href="#ClickHouse.Generator-1273"><span class="linenos">1273</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ON CLUSTER </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1274"><a href="#ClickHouse.Generator-1274"><span class="linenos">1274</span></a>
</span><span id="ClickHouse.Generator-1275"><a href="#ClickHouse.Generator-1275"><span class="linenos">1275</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">createable_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> <span class="n">locations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1276"><a href="#ClickHouse.Generator-1276"><span class="linenos">1276</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ON_CLUSTER_TARGETS</span> <span class="ow">and</span> <span class="n">locations</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1277"><a href="#ClickHouse.Generator-1277"><span class="linenos">1277</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span>
</span><span id="ClickHouse.Generator-1278"><a href="#ClickHouse.Generator-1278"><span class="linenos">1278</span></a> <span class="p">):</span>
</span><span id="ClickHouse.Generator-1279"><a href="#ClickHouse.Generator-1279"><span class="linenos">1279</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1280"><a href="#ClickHouse.Generator-1280"><span class="linenos">1280</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1281"><a href="#ClickHouse.Generator-1281"><span class="linenos">1281</span></a> <span class="s2">&quot;this&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator-1282"><a href="#ClickHouse.Generator-1282"><span class="linenos">1282</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Generator-1283"><a href="#ClickHouse.Generator-1283"><span class="linenos">1283</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
</span><span id="ClickHouse.Generator-1284"><a href="#ClickHouse.Generator-1284"><span class="linenos">1284</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">locations</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]]</span>
</span><span id="ClickHouse.Generator-1285"><a href="#ClickHouse.Generator-1285"><span class="linenos">1285</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Generator-1286"><a href="#ClickHouse.Generator-1286"><span class="linenos">1286</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema_columns_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1287"><a href="#ClickHouse.Generator-1287"><span class="linenos">1287</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this_schema</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1288"><a href="#ClickHouse.Generator-1288"><span class="linenos">1288</span></a>
</span><span id="ClickHouse.Generator-1289"><a href="#ClickHouse.Generator-1289"><span class="linenos">1289</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this_name</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_properties</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1290"><a href="#ClickHouse.Generator-1290"><span class="linenos">1290</span></a>
</span><span id="ClickHouse.Generator-1291"><a href="#ClickHouse.Generator-1291"><span class="linenos">1291</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">createable_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">locations</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1292"><a href="#ClickHouse.Generator-1292"><span class="linenos">1292</span></a>
</span><span id="ClickHouse.Generator-1293"><a href="#ClickHouse.Generator-1293"><span class="linenos">1293</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">create_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1294"><a href="#ClickHouse.Generator-1294"><span class="linenos">1294</span></a> <span class="c1"># The comment property comes last in CTAS statements, i.e. after the query</span>
</span><span id="ClickHouse.Generator-1295"><a href="#ClickHouse.Generator-1295"><span class="linenos">1295</span></a> <span class="n">query</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
</span><span id="ClickHouse.Generator-1296"><a href="#ClickHouse.Generator-1296"><span class="linenos">1296</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1297"><a href="#ClickHouse.Generator-1297"><span class="linenos">1297</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1298"><a href="#ClickHouse.Generator-1298"><span class="linenos">1298</span></a> <span class="k">if</span> <span class="n">comment_prop</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1299"><a href="#ClickHouse.Generator-1299"><span class="linenos">1299</span></a> <span class="n">comment_prop</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="ClickHouse.Generator-1300"><a href="#ClickHouse.Generator-1300"><span class="linenos">1300</span></a> <span class="n">query</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">query</span><span class="p">))</span>
</span><span id="ClickHouse.Generator-1301"><a href="#ClickHouse.Generator-1301"><span class="linenos">1301</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1302"><a href="#ClickHouse.Generator-1302"><span class="linenos">1302</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse.Generator-1303"><a href="#ClickHouse.Generator-1303"><span class="linenos">1303</span></a>
</span><span id="ClickHouse.Generator-1304"><a href="#ClickHouse.Generator-1304"><span class="linenos">1304</span></a> <span class="n">create_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">create_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1305"><a href="#ClickHouse.Generator-1305"><span class="linenos">1305</span></a>
</span><span id="ClickHouse.Generator-1306"><a href="#ClickHouse.Generator-1306"><span class="linenos">1306</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comment_prop</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1307"><a href="#ClickHouse.Generator-1307"><span class="linenos">1307</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">comment_sql</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1308"><a href="#ClickHouse.Generator-1308"><span class="linenos">1308</span></a>
</span><span id="ClickHouse.Generator-1309"><a href="#ClickHouse.Generator-1309"><span class="linenos">1309</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">create_sql</span><span class="si">}{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1310"><a href="#ClickHouse.Generator-1310"><span class="linenos">1310</span></a>
</span><span id="ClickHouse.Generator-1311"><a href="#ClickHouse.Generator-1311"><span class="linenos">1311</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">prewhere_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1312"><a href="#ClickHouse.Generator-1312"><span class="linenos">1312</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">))</span>
</span><span id="ClickHouse.Generator-1313"><a href="#ClickHouse.Generator-1313"><span class="linenos">1313</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">&#39;PREWHERE&#39;</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1314"><a href="#ClickHouse.Generator-1314"><span class="linenos">1314</span></a>
</span><span id="ClickHouse.Generator-1315"><a href="#ClickHouse.Generator-1315"><span class="linenos">1315</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">indexcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1316"><a href="#ClickHouse.Generator-1316"><span class="linenos">1316</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1317"><a href="#ClickHouse.Generator-1317"><span class="linenos">1317</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1318"><a href="#ClickHouse.Generator-1318"><span class="linenos">1318</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1319"><a href="#ClickHouse.Generator-1319"><span class="linenos">1319</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">expr</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expr</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1320"><a href="#ClickHouse.Generator-1320"><span class="linenos">1320</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;index_type&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1321"><a href="#ClickHouse.Generator-1321"><span class="linenos">1321</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; TYPE </span><span class="si">{</span><span class="n">index_type</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">index_type</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1322"><a href="#ClickHouse.Generator-1322"><span class="linenos">1322</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;granularity&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1323"><a href="#ClickHouse.Generator-1323"><span class="linenos">1323</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; GRANULARITY </span><span class="si">{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">granularity</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator-1324"><a href="#ClickHouse.Generator-1324"><span class="linenos">1324</span></a>
</span><span id="ClickHouse.Generator-1325"><a href="#ClickHouse.Generator-1325"><span class="linenos">1325</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;INDEX</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expr</span><span class="si">}{</span><span class="n">index_type</span><span class="si">}{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1326"><a href="#ClickHouse.Generator-1326"><span class="linenos">1326</span></a>
</span><span id="ClickHouse.Generator-1327"><a href="#ClickHouse.Generator-1327"><span class="linenos">1327</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1328"><a href="#ClickHouse.Generator-1328"><span class="linenos">1328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PARTITION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1329"><a href="#ClickHouse.Generator-1329"><span class="linenos">1329</span></a>
</span><span id="ClickHouse.Generator-1330"><a href="#ClickHouse.Generator-1330"><span class="linenos">1330</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partitionid_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionId</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1331"><a href="#ClickHouse.Generator-1331"><span class="linenos">1331</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ID </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1332"><a href="#ClickHouse.Generator-1332"><span class="linenos">1332</span></a>
</span><span id="ClickHouse.Generator-1333"><a href="#ClickHouse.Generator-1333"><span class="linenos">1333</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">replacepartition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ReplacePartition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1334"><a href="#ClickHouse.Generator-1334"><span class="linenos">1334</span></a> <span class="k">return</span> <span class="p">(</span>
</span><span id="ClickHouse.Generator-1335"><a href="#ClickHouse.Generator-1335"><span class="linenos">1335</span></a> <span class="sa">f</span><span class="s2">&quot;REPLACE </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;source&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1336"><a href="#ClickHouse.Generator-1336"><span class="linenos">1336</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Generator-1337"><a href="#ClickHouse.Generator-1337"><span class="linenos">1337</span></a>
</span><span id="ClickHouse.Generator-1338"><a href="#ClickHouse.Generator-1338"><span class="linenos">1338</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">projectiondef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1339"><a href="#ClickHouse.Generator-1339"><span class="linenos">1339</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PROJECTION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator-1340"><a href="#ClickHouse.Generator-1340"><span class="linenos">1340</span></a>
</span><span id="ClickHouse.Generator-1341"><a href="#ClickHouse.Generator-1341"><span class="linenos">1341</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1342"><a href="#ClickHouse.Generator-1342"><span class="linenos">1342</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">is_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1343"><a href="#ClickHouse.Generator-1343"><span class="linenos">1343</span></a>
</span><span id="ClickHouse.Generator-1344"><a href="#ClickHouse.Generator-1344"><span class="linenos">1344</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1345"><a href="#ClickHouse.Generator-1345"><span class="linenos">1345</span></a> <span class="c1"># value IS NOT NULL -&gt; NOT (value IS NULL)</span>
</span><span id="ClickHouse.Generator-1346"><a href="#ClickHouse.Generator-1346"><span class="linenos">1346</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">is_sql</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1347"><a href="#ClickHouse.Generator-1347"><span class="linenos">1347</span></a>
</span><span id="ClickHouse.Generator-1348"><a href="#ClickHouse.Generator-1348"><span class="linenos">1348</span></a> <span class="k">return</span> <span class="n">is_sql</span>
</span><span id="ClickHouse.Generator-1349"><a href="#ClickHouse.Generator-1349"><span class="linenos">1349</span></a>
</span><span id="ClickHouse.Generator-1350"><a href="#ClickHouse.Generator-1350"><span class="linenos">1350</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1351"><a href="#ClickHouse.Generator-1351"><span class="linenos">1351</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">in_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1352"><a href="#ClickHouse.Generator-1352"><span class="linenos">1352</span></a>
</span><span id="ClickHouse.Generator-1353"><a href="#ClickHouse.Generator-1353"><span class="linenos">1353</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1354"><a href="#ClickHouse.Generator-1354"><span class="linenos">1354</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="n">in_sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;GLOBAL IN&quot;</span><span class="p">,</span> <span class="s2">&quot;GLOBAL NOT IN&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1355"><a href="#ClickHouse.Generator-1355"><span class="linenos">1355</span></a>
</span><span id="ClickHouse.Generator-1356"><a href="#ClickHouse.Generator-1356"><span class="linenos">1356</span></a> <span class="k">return</span> <span class="n">in_sql</span>
</span><span id="ClickHouse.Generator-1357"><a href="#ClickHouse.Generator-1357"><span class="linenos">1357</span></a>
</span><span id="ClickHouse.Generator-1358"><a href="#ClickHouse.Generator-1358"><span class="linenos">1358</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1359"><a href="#ClickHouse.Generator-1359"><span class="linenos">1359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator-1360"><a href="#ClickHouse.Generator-1360"><span class="linenos">1360</span></a> <span class="c1"># let `GLOBAL IN` child interpose `NOT`</span>
</span><span id="ClickHouse.Generator-1361"><a href="#ClickHouse.Generator-1361"><span class="linenos">1361</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1362"><a href="#ClickHouse.Generator-1362"><span class="linenos">1362</span></a>
</span><span id="ClickHouse.Generator-1363"><a href="#ClickHouse.Generator-1363"><span class="linenos">1363</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">not_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1364"><a href="#ClickHouse.Generator-1364"><span class="linenos">1364</span></a>
</span><span id="ClickHouse.Generator-1365"><a href="#ClickHouse.Generator-1365"><span class="linenos">1365</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">values_as_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1366"><a href="#ClickHouse.Generator-1366"><span class="linenos">1366</span></a> <span class="c1"># If the VALUES clause contains tuples of expressions, we need to treat it</span>
</span><span id="ClickHouse.Generator-1367"><a href="#ClickHouse.Generator-1367"><span class="linenos">1367</span></a> <span class="c1"># as a table since Clickhouse will automatically alias it as such.</span>
</span><span id="ClickHouse.Generator-1368"><a href="#ClickHouse.Generator-1368"><span class="linenos">1368</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1369"><a href="#ClickHouse.Generator-1369"><span class="linenos">1369</span></a>
</span><span id="ClickHouse.Generator-1370"><a href="#ClickHouse.Generator-1370"><span class="linenos">1370</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1371"><a href="#ClickHouse.Generator-1371"><span class="linenos">1371</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="ClickHouse.Generator-1372"><a href="#ClickHouse.Generator-1372"><span class="linenos">1372</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="nb">any</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">)</span>
</span><span id="ClickHouse.Generator-1373"><a href="#ClickHouse.Generator-1373"><span class="linenos">1373</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Generator-1374"><a href="#ClickHouse.Generator-1374"><span class="linenos">1374</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse.Generator-1375"><a href="#ClickHouse.Generator-1375"><span class="linenos">1375</span></a>
</span><span id="ClickHouse.Generator-1376"><a href="#ClickHouse.Generator-1376"><span class="linenos">1376</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">values_as_table</span><span class="o">=</span><span class="n">values_as_table</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Generator converts a given syntax tree to the corresponding SQL string.</p>
<h6 id="arguments">Arguments:</h6>
<ul>
<li><strong>pretty:</strong> Whether to format the produced SQL string.
Default: False.</li>
<li><strong>identify:</strong> Determines when an identifier should be quoted. Possible values are:
False (default): Never quote, except in cases where it's mandatory by the dialect.
True or 'always': Always quote.
'safe': Only quote identifiers that are case insensitive.</li>
<li><strong>normalize:</strong> Whether to normalize identifiers to lowercase.
Default: False.</li>
<li><strong>pad:</strong> The pad size in a formatted string. For example, this affects the indentation of
a projection in a query, relative to its nesting level.
Default: 2.</li>
<li><strong>indent:</strong> The indentation size in a formatted string. For example, this affects the
indentation of subqueries and filters under a <code>WHERE</code> clause.
Default: 2.</li>
<li><strong>normalize_functions:</strong> How to normalize function names. Possible values are:
"upper" or True (default): Convert names to uppercase.
"lower": Convert names to lowercase.
False: Disables function name normalization.</li>
<li><strong>unsupported_level:</strong> Determines the generator's behavior when it encounters unsupported expressions.
Default ErrorLevel.WARN.</li>
<li><strong>max_unsupported:</strong> Maximum number of unsupported messages to include in a raised UnsupportedError.
This is only relevant if unsupported_level is ErrorLevel.RAISE.
Default: 3</li>
<li><strong>leading_comma:</strong> Whether the comma is leading or trailing in select expressions.
This is only relevant when generating in pretty mode.
Default: False</li>
<li><strong>max_text_width:</strong> The max number of characters in a segment before creating new lines in pretty mode.
The default is on the smaller end because the length only represents a segment and not the true
line length.
Default: 80</li>
<li><strong>comments:</strong> Whether to preserve comments in the output SQL code.
Default: True</li>
</ul>
</div>
<div id="ClickHouse.Generator.QUERY_HINTS" class="classattr">
<div class="attr variable">
<span class="name">QUERY_HINTS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.QUERY_HINTS"></a>
</div>
<div id="ClickHouse.Generator.STRUCT_DELIMITER" class="classattr">
<div class="attr variable">
<span class="name">STRUCT_DELIMITER</span> =
<span class="default_value">(&#39;(&#39;, &#39;)&#39;)</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.STRUCT_DELIMITER"></a>
</div>
<div id="ClickHouse.Generator.NVL2_SUPPORTED" class="classattr">
<div class="attr variable">
<span class="name">NVL2_SUPPORTED</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.NVL2_SUPPORTED"></a>
</div>
<div id="ClickHouse.Generator.TABLESAMPLE_REQUIRES_PARENS" class="classattr">
<div class="attr variable">
<span class="name">TABLESAMPLE_REQUIRES_PARENS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.TABLESAMPLE_REQUIRES_PARENS"></a>
</div>
<div id="ClickHouse.Generator.TABLESAMPLE_SIZE_IS_ROWS" class="classattr">
<div class="attr variable">
<span class="name">TABLESAMPLE_SIZE_IS_ROWS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.TABLESAMPLE_SIZE_IS_ROWS"></a>
</div>
<div id="ClickHouse.Generator.TABLESAMPLE_KEYWORDS" class="classattr">
<div class="attr variable">
<span class="name">TABLESAMPLE_KEYWORDS</span> =
<span class="default_value">&#39;SAMPLE&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.TABLESAMPLE_KEYWORDS"></a>
</div>
<div id="ClickHouse.Generator.LAST_DAY_SUPPORTS_DATE_PART" class="classattr">
<div class="attr variable">
<span class="name">LAST_DAY_SUPPORTS_DATE_PART</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.LAST_DAY_SUPPORTS_DATE_PART"></a>
</div>
<div id="ClickHouse.Generator.CAN_IMPLEMENT_ARRAY_ANY" class="classattr">
<div class="attr variable">
<span class="name">CAN_IMPLEMENT_ARRAY_ANY</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.CAN_IMPLEMENT_ARRAY_ANY"></a>
</div>
<div id="ClickHouse.Generator.SUPPORTS_TO_NUMBER" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_TO_NUMBER</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.SUPPORTS_TO_NUMBER"></a>
</div>
<div id="ClickHouse.Generator.JOIN_HINTS" class="classattr">
<div class="attr variable">
<span class="name">JOIN_HINTS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.JOIN_HINTS"></a>
</div>
<div id="ClickHouse.Generator.TABLE_HINTS" class="classattr">
<div class="attr variable">
<span class="name">TABLE_HINTS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.TABLE_HINTS"></a>
</div>
<div id="ClickHouse.Generator.GROUPINGS_SEP" class="classattr">
<div class="attr variable">
<span class="name">GROUPINGS_SEP</span> =
<span class="default_value">&#39;&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.GROUPINGS_SEP"></a>
</div>
<div id="ClickHouse.Generator.SET_OP_MODIFIERS" class="classattr">
<div class="attr variable">
<span class="name">SET_OP_MODIFIERS</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.SET_OP_MODIFIERS"></a>
</div>
<div id="ClickHouse.Generator.ARRAY_SIZE_NAME" class="classattr">
<div class="attr variable">
<span class="name">ARRAY_SIZE_NAME</span> =
<span class="default_value">&#39;LENGTH&#39;</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.ARRAY_SIZE_NAME"></a>
</div>
<div id="ClickHouse.Generator.WRAP_DERIVED_VALUES" class="classattr">
<div class="attr variable">
<span class="name">WRAP_DERIVED_VALUES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.WRAP_DERIVED_VALUES"></a>
</div>
<div id="ClickHouse.Generator.STRING_TYPE_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">STRING_TYPE_MAPPING</span> =
<input id="ClickHouse.Generator.STRING_TYPE_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Generator.STRING_TYPE_MAPPING-view-value"></label><span class="default_value">{&lt;Type.BLOB: &#39;BLOB&#39;&gt;: &#39;String&#39;, &lt;Type.CHAR: &#39;CHAR&#39;&gt;: &#39;String&#39;, &lt;Type.LONGBLOB: &#39;LONGBLOB&#39;&gt;: &#39;String&#39;, &lt;Type.LONGTEXT: &#39;LONGTEXT&#39;&gt;: &#39;String&#39;, &lt;Type.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;: &#39;String&#39;, &lt;Type.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;: &#39;String&#39;, &lt;Type.TINYBLOB: &#39;TINYBLOB&#39;&gt;: &#39;String&#39;, &lt;Type.TINYTEXT: &#39;TINYTEXT&#39;&gt;: &#39;String&#39;, &lt;Type.TEXT: &#39;TEXT&#39;&gt;: &#39;String&#39;, &lt;Type.VARBINARY: &#39;VARBINARY&#39;&gt;: &#39;String&#39;, &lt;Type.VARCHAR: &#39;VARCHAR&#39;&gt;: &#39;String&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.STRING_TYPE_MAPPING"></a>
</div>
<div id="ClickHouse.Generator.SUPPORTED_JSON_PATH_PARTS" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTED_JSON_PATH_PARTS</span> =
<input id="ClickHouse.Generator.SUPPORTED_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.SUPPORTED_JSON_PATH_PARTS"></a>
</div>
<div id="ClickHouse.Generator.TYPE_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">TYPE_MAPPING</span> =
<input id="ClickHouse.Generator.TYPE_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Generator.TYPE_MAPPING-view-value"></label><span class="default_value">{&lt;Type.DATETIME2: &#39;DATETIME2&#39;&gt;: &#39;DateTime&#39;, &lt;Type.NCHAR: &#39;NCHAR&#39;&gt;: &#39;CHAR&#39;, &lt;Type.NVARCHAR: &#39;NVARCHAR&#39;&gt;: &#39;VARCHAR&#39;, &lt;Type.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;: &#39;String&#39;, &lt;Type.LONGTEXT: &#39;LONGTEXT&#39;&gt;: &#39;String&#39;, &lt;Type.TINYTEXT: &#39;TINYTEXT&#39;&gt;: &#39;String&#39;, &lt;Type.BLOB: &#39;BLOB&#39;&gt;: &#39;String&#39;, &lt;Type.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;: &#39;String&#39;, &lt;Type.LONGBLOB: &#39;LONGBLOB&#39;&gt;: &#39;String&#39;, &lt;Type.TINYBLOB: &#39;TINYBLOB&#39;&gt;: &#39;String&#39;, &lt;Type.INET: &#39;INET&#39;&gt;: &#39;INET&#39;, &lt;Type.ROWVERSION: &#39;ROWVERSION&#39;&gt;: &#39;VARBINARY&#39;, &lt;Type.SMALLDATETIME: &#39;SMALLDATETIME&#39;&gt;: &#39;DateTime&#39;, &lt;Type.CHAR: &#39;CHAR&#39;&gt;: &#39;String&#39;, &lt;Type.TEXT: &#39;TEXT&#39;&gt;: &#39;String&#39;, &lt;Type.VARBINARY: &#39;VARBINARY&#39;&gt;: &#39;String&#39;, &lt;Type.VARCHAR: &#39;VARCHAR&#39;&gt;: &#39;String&#39;, &lt;Type.ARRAY: &#39;ARRAY&#39;&gt;: &#39;Array&#39;, &lt;Type.BOOLEAN: &#39;BOOLEAN&#39;&gt;: &#39;Bool&#39;, &lt;Type.BIGINT: &#39;BIGINT&#39;&gt;: &#39;Int64&#39;, &lt;Type.DATE32: &#39;DATE32&#39;&gt;: &#39;Date32&#39;, &lt;Type.DATETIME: &#39;DATETIME&#39;&gt;: &#39;DateTime&#39;, &lt;Type.DATETIME64: &#39;DATETIME64&#39;&gt;: &#39;DateTime64&#39;, &lt;Type.DECIMAL: &#39;DECIMAL&#39;&gt;: &#39;Decimal&#39;, &lt;Type.DECIMAL32: &#39;DECIMAL32&#39;&gt;: &#39;Decimal32&#39;, &lt;Type.DECIMAL64: &#39;DECIMAL64&#39;&gt;: &#39;Decimal64&#39;, &lt;Type.DECIMAL128: &#39;DECIMAL128&#39;&gt;: &#39;Decimal128&#39;, &lt;Type.DECIMAL256: &#39;DECIMAL256&#39;&gt;: &#39;Decimal256&#39;, &lt;Type.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;: &#39;DateTime&#39;, &lt;Type.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;: &#39;DateTime&#39;, &lt;Type.DOUBLE: &#39;DOUBLE&#39;&gt;: &#39;Float64&#39;, &lt;Type.ENUM: &#39;ENUM&#39;&gt;: &#39;Enum&#39;, &lt;Type.ENUM8: &#39;ENUM8&#39;&gt;: &#39;Enum8&#39;, &lt;Type.ENUM16: &#39;ENUM16&#39;&gt;: &#39;Enum16&#39;, &lt;Type.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;: &#39;FixedString&#39;, &lt;Type.FLOAT: &#39;FLOAT&#39;&gt;: &#39;Float32&#39;, &lt;Type.INT: &#39;INT&#39;&gt;: &#39;Int32&#39;, &lt;Type.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;: &#39;Int32&#39;, &lt;Type.INT128: &#39;INT128&#39;&gt;: &#39;Int128&#39;, &lt;Type.INT256: &#39;INT256&#39;&gt;: &#39;Int256&#39;, &lt;Type.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;: &#39;LowCardinality&#39;, &lt;Type.MAP: &#39;MAP&#39;&gt;: &#39;Map&#39;, &lt;Type.NESTED: &#39;NESTED&#39;&gt;: &#39;Nested&#39;, &lt;Type.SMALLINT: &#39;SMALLINT&#39;&gt;: &#39;Int16&#39;, &lt;Type.STRUCT: &#39;STRUCT&#39;&gt;: &#39;Tuple&#39;, &lt;Type.TINYINT: &#39;TINYINT&#39;&gt;: &#39;Int8&#39;, &lt;Type.UBIGINT: &#39;UBIGINT&#39;&gt;: &#39;UInt64&#39;, &lt;Type.UINT: &#39;UINT&#39;&gt;: &#39;UInt32&#39;, &lt;Type.UINT128: &#39;UINT128&#39;&gt;: &#39;UInt128&#39;, &lt;Type.UINT256: &#39;UINT256&#39;&gt;: &#39;UInt256&#39;, &lt;Type.USMALLINT: &#39;USMALLINT&#39;&gt;: &#39;UInt16&#39;, &lt;Type.UTINYINT: &#39;UTINYINT&#39;&gt;: &#39;UInt8&#39;, &lt;Type.IPV4: &#39;IPV4&#39;&gt;: &#39;IPv4&#39;, &lt;Type.IPV6: &#39;IPV6&#39;&gt;: &#39;IPv6&#39;, &lt;Type.POINT: &#39;POINT&#39;&gt;: &#39;Point&#39;, &lt;Type.RING: &#39;RING&#39;&gt;: &#39;Ring&#39;, &lt;Type.LINESTRING: &#39;LINESTRING&#39;&gt;: &#39;LineString&#39;, &lt;Type.MULTILINESTRING: &#39;MULTILINESTRING&#39;&gt;: &#39;MultiLineString&#39;, &lt;Type.POLYGON: &#39;POLYGON&#39;&gt;: &#39;Polygon&#39;, &lt;Type.MULTIPOLYGON: &#39;MULTIPOLYGON&#39;&gt;: &#39;MultiPolygon&#39;, &lt;Type.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;: &#39;AggregateFunction&#39;, &lt;Type.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;: &#39;SimpleAggregateFunction&#39;, &lt;Type.DYNAMIC: &#39;DYNAMIC&#39;&gt;: &#39;Dynamic&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.TYPE_MAPPING"></a>
</div>
<div id="ClickHouse.Generator.TRANSFORMS" class="classattr">
<div class="attr variable">
<span class="name">TRANSFORMS</span> =
<input id="ClickHouse.Generator.TRANSFORMS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Generator.TRANSFORMS-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>&#39;&gt;: &lt;function json_path_key_only_name&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#AllowedValuesProperty">sqlglot.expressions.AllowedValuesProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#AnalyzeColumns">sqlglot.expressions.AnalyzeColumns</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#AnalyzeWith">sqlglot.expressions.AnalyzeWith</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#AutoRefreshProperty">sqlglot.expressions.AutoRefreshProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BackupProperty">sqlglot.expressions.BackupProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CaseSpecificColumnConstraint">sqlglot.expressions.CaseSpecificColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CharacterSetColumnConstraint">sqlglot.expressions.CharacterSetColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CharacterSetProperty">sqlglot.expressions.CharacterSetProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ClusteredColumnConstraint">sqlglot.expressions.ClusteredColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CollateColumnConstraint">sqlglot.expressions.CollateColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CommentColumnConstraint">sqlglot.expressions.CommentColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CopyGrantsProperty">sqlglot.expressions.CopyGrantsProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CredentialsProperty">sqlglot.expressions.CredentialsProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateFormatColumnConstraint">sqlglot.expressions.DateFormatColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DefaultColumnConstraint">sqlglot.expressions.DefaultColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DynamicProperty">sqlglot.expressions.DynamicProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#EmptyProperty">sqlglot.expressions.EmptyProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#EncodeColumnConstraint">sqlglot.expressions.EncodeColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#EphemeralColumnConstraint">sqlglot.expressions.EphemeralColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ExcludeColumnConstraint">sqlglot.expressions.ExcludeColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ExecuteAsProperty">sqlglot.expressions.ExecuteAsProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Except">sqlglot.expressions.Except</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ExternalProperty">sqlglot.expressions.ExternalProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#GlobalProperty">sqlglot.expressions.GlobalProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#HeapProperty">sqlglot.expressions.HeapProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#IcebergProperty">sqlglot.expressions.IcebergProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#InheritsProperty">sqlglot.expressions.InheritsProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#InlineLengthColumnConstraint">sqlglot.expressions.InlineLengthColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#InputModelProperty">sqlglot.expressions.InputModelProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Intersect">sqlglot.expressions.Intersect</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#IntervalSpan">sqlglot.expressions.IntervalSpan</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Int64">sqlglot.expressions.Int64</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#LanguageProperty">sqlglot.expressions.LanguageProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#LocationProperty">sqlglot.expressions.LocationProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#LogProperty">sqlglot.expressions.LogProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#MaterializedProperty">sqlglot.expressions.MaterializedProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#NonClusteredColumnConstraint">sqlglot.expressions.NonClusteredColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#NoPrimaryIndexProperty">sqlglot.expressions.NoPrimaryIndexProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#NotForReplicationColumnConstraint">sqlglot.expressions.NotForReplicationColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#OnCommitProperty">sqlglot.expressions.OnCommitProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#OnProperty">sqlglot.expressions.OnProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#OnUpdateColumnConstraint">sqlglot.expressions.OnUpdateColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Operator">sqlglot.expressions.Operator</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#OutputModelProperty">sqlglot.expressions.OutputModelProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#PathColumnConstraint">sqlglot.expressions.PathColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#PivotAny">sqlglot.expressions.PivotAny</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ProjectionPolicyColumnConstraint">sqlglot.expressions.ProjectionPolicyColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#RemoteWithConnectionModelProperty">sqlglot.expressions.RemoteWithConnectionModelProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ReturnsProperty">sqlglot.expressions.ReturnsProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SampleProperty">sqlglot.expressions.SampleProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SecureProperty">sqlglot.expressions.SecureProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SecurityProperty">sqlglot.expressions.SecurityProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SetConfigProperty">sqlglot.expressions.SetConfigProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SetProperty">sqlglot.expressions.SetProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SettingsProperty">sqlglot.expressions.SettingsProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SharingProperty">sqlglot.expressions.SharingProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SqlReadWriteProperty">sqlglot.expressions.SqlReadWriteProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SqlSecurityProperty">sqlglot.expressions.SqlSecurityProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StabilityProperty">sqlglot.expressions.StabilityProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Stream">sqlglot.expressions.Stream</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StreamingTableProperty">sqlglot.expressions.StreamingTableProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrictProperty">sqlglot.expressions.StrictProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SwapTable">sqlglot.expressions.SwapTable</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Tags">sqlglot.expressions.Tags</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TitleColumnConstraint">sqlglot.expressions.TitleColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ToTableProperty">sqlglot.expressions.ToTableProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TransformModelProperty">sqlglot.expressions.TransformModelProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TransientProperty">sqlglot.expressions.TransientProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Union">sqlglot.expressions.Union</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UnloggedProperty">sqlglot.expressions.UnloggedProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UsingTemplateProperty">sqlglot.expressions.UsingTemplateProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UsingData">sqlglot.expressions.UsingData</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Uuid">sqlglot.expressions.Uuid</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UppercaseColumnConstraint">sqlglot.expressions.UppercaseColumnConstraint</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>&#39;&gt;: &lt;function _map_sql&gt;, &lt;class &#39;<a href="../expressions.html#ViewAttributeProperty">sqlglot.expressions.ViewAttributeProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#VolatileProperty">sqlglot.expressions.VolatileProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#WithJournalTableProperty">sqlglot.expressions.WithJournalTableProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#WithProcedureOptions">sqlglot.expressions.WithProcedureOptions</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#WithSchemaBindingProperty">sqlglot.expressions.WithSchemaBindingProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#WithOperator">sqlglot.expressions.WithOperator</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ForceProperty">sqlglot.expressions.ForceProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>&#39;&gt;: &lt;function arg_max_or_min_no_count.&lt;locals&gt;._arg_max_or_min_sql&gt;, &lt;class &#39;<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>&#39;&gt;: &lt;function arg_max_or_min_no_count.&lt;locals&gt;._arg_max_or_min_sql&gt;, &lt;class &#39;<a href="../expressions.html#Array">sqlglot.expressions.Array</a>&#39;&gt;: &lt;function inline_array_sql&gt;, &lt;class &#39;<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CompressColumnConstraint">sqlglot.expressions.CompressColumnConstraint</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ComputedColumnConstraint">sqlglot.expressions.ComputedColumnConstraint</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>&#39;&gt;: &lt;function _datetime_delta_sql.&lt;locals&gt;._delta_sql&gt;, &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;: &lt;function _datetime_delta_sql.&lt;locals&gt;._delta_sql&gt;, &lt;class &#39;<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>&#39;&gt;: &lt;function _datetime_delta_sql.&lt;locals&gt;._delta_sql&gt;, &lt;class &#39;<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Final">sqlglot.expressions.Final</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONCast">sqlglot.expressions.JSONCast</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>&#39;&gt;: &lt;function json_extract_segments.&lt;locals&gt;._json_extract_segments&gt;, &lt;class &#39;<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>&#39;&gt;: &lt;function json_extract_segments.&lt;locals&gt;._json_extract_segments&gt;, &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;: &lt;function length_or_char_length_sql&gt;, &lt;class &#39;<a href="../expressions.html#Map">sqlglot.expressions.Map</a>&#39;&gt;: &lt;function _map_sql&gt;, &lt;class &#39;<a href="../expressions.html#Median">sqlglot.expressions.Median</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#PartitionedByProperty">sqlglot.expressions.PartitionedByProperty</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Pivot">sqlglot.expressions.Pivot</a>&#39;&gt;: &lt;function no_pivot_sql&gt;, &lt;class &#39;<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>&#39;&gt;: &lt;function _quantile_sql&gt;, &lt;class &#39;<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>&#39;&gt;: &lt;function _timestrtotime_sql&gt;, &lt;class &#39;<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>&#39;&gt;: &lt;function _datetime_delta_sql.&lt;locals&gt;._delta_sql&gt;, &lt;class &#39;<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>&#39;&gt;: &lt;function _datetime_delta_sql.&lt;locals&gt;._delta_sql&gt;, &lt;class &#39;<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>&#39;&gt;: &lt;function sha256_sql&gt;, &lt;class &#39;<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>&#39;&gt;: &lt;function _unix_to_time_sql&gt;, &lt;class &#39;<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>&#39;&gt;: &lt;function timestamptrunc_sql.&lt;locals&gt;._timestamptrunc_sql&gt;, &lt;class &#39;<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SchemaCommentProperty">sqlglot.expressions.SchemaCommentProperty</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>&#39;&gt;: &lt;function <a href="#ClickHouse.Generator">ClickHouse.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.TRANSFORMS"></a>
</div>
<div id="ClickHouse.Generator.PROPERTIES_LOCATION" class="classattr">
<div class="attr variable">
<span class="name">PROPERTIES_LOCATION</span> =
<input id="ClickHouse.Generator.PROPERTIES_LOCATION-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Generator.PROPERTIES_LOCATION-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#AllowedValuesProperty">sqlglot.expressions.AllowedValuesProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#AlgorithmProperty">sqlglot.expressions.AlgorithmProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#AutoIncrementProperty">sqlglot.expressions.AutoIncrementProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#AutoRefreshProperty">sqlglot.expressions.AutoRefreshProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#BackupProperty">sqlglot.expressions.BackupProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#BlockCompressionProperty">sqlglot.expressions.BlockCompressionProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#CharacterSetProperty">sqlglot.expressions.CharacterSetProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ChecksumProperty">sqlglot.expressions.ChecksumProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#CollateProperty">sqlglot.expressions.CollateProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#CopyGrantsProperty">sqlglot.expressions.CopyGrantsProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#Cluster">sqlglot.expressions.Cluster</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ClusteredByProperty">sqlglot.expressions.ClusteredByProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DistributedByProperty">sqlglot.expressions.DistributedByProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DuplicateKeyProperty">sqlglot.expressions.DuplicateKeyProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DataBlocksizeProperty">sqlglot.expressions.DataBlocksizeProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DataDeletionProperty">sqlglot.expressions.DataDeletionProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DefinerProperty">sqlglot.expressions.DefinerProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DictRange">sqlglot.expressions.DictRange</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DictProperty">sqlglot.expressions.DictProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DynamicProperty">sqlglot.expressions.DynamicProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DistKeyProperty">sqlglot.expressions.DistKeyProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#DistStyleProperty">sqlglot.expressions.DistStyleProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#EmptyProperty">sqlglot.expressions.EmptyProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#EncodeProperty">sqlglot.expressions.EncodeProperty</a>&#39;&gt;: &lt;Location.POST_EXPRESSION: &#39;POST_EXPRESSION&#39;&gt;, &lt;class &#39;<a href="../expressions.html#EngineProperty">sqlglot.expressions.EngineProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ExecuteAsProperty">sqlglot.expressions.ExecuteAsProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ExternalProperty">sqlglot.expressions.ExternalProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#FallbackProperty">sqlglot.expressions.FallbackProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#FileFormatProperty">sqlglot.expressions.FileFormatProperty</a>&#39;&gt;: &lt;Location.POST_WITH: &#39;POST_WITH&#39;&gt;, &lt;class &#39;<a href="../expressions.html#FreespaceProperty">sqlglot.expressions.FreespaceProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#GlobalProperty">sqlglot.expressions.GlobalProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#HeapProperty">sqlglot.expressions.HeapProperty</a>&#39;&gt;: &lt;Location.POST_WITH: &#39;POST_WITH&#39;&gt;, &lt;class &#39;<a href="../expressions.html#InheritsProperty">sqlglot.expressions.InheritsProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#IcebergProperty">sqlglot.expressions.IcebergProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#IncludeProperty">sqlglot.expressions.IncludeProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#InputModelProperty">sqlglot.expressions.InputModelProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#IsolatedLoadingProperty">sqlglot.expressions.IsolatedLoadingProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JournalProperty">sqlglot.expressions.JournalProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#LanguageProperty">sqlglot.expressions.LanguageProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#LikeProperty">sqlglot.expressions.LikeProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#LocationProperty">sqlglot.expressions.LocationProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#LockProperty">sqlglot.expressions.LockProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#LockingProperty">sqlglot.expressions.LockingProperty</a>&#39;&gt;: &lt;Location.POST_ALIAS: &#39;POST_ALIAS&#39;&gt;, &lt;class &#39;<a href="../expressions.html#LogProperty">sqlglot.expressions.LogProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#MaterializedProperty">sqlglot.expressions.MaterializedProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#MergeBlockRatioProperty">sqlglot.expressions.MergeBlockRatioProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#NoPrimaryIndexProperty">sqlglot.expressions.NoPrimaryIndexProperty</a>&#39;&gt;: &lt;Location.POST_EXPRESSION: &#39;POST_EXPRESSION&#39;&gt;, &lt;class &#39;<a href="../expressions.html#OnProperty">sqlglot.expressions.OnProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#OnCommitProperty">sqlglot.expressions.OnCommitProperty</a>&#39;&gt;: &lt;Location.POST_EXPRESSION: &#39;POST_EXPRESSION&#39;&gt;, &lt;class &#39;<a href="../expressions.html#Order">sqlglot.expressions.Order</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#OutputModelProperty">sqlglot.expressions.OutputModelProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#PartitionedByProperty">sqlglot.expressions.PartitionedByProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#PartitionedOfProperty">sqlglot.expressions.PartitionedOfProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#PrimaryKey">sqlglot.expressions.PrimaryKey</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#Property">sqlglot.expressions.Property</a>&#39;&gt;: &lt;Location.POST_WITH: &#39;POST_WITH&#39;&gt;, &lt;class &#39;<a href="../expressions.html#RemoteWithConnectionModelProperty">sqlglot.expressions.RemoteWithConnectionModelProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ReturnsProperty">sqlglot.expressions.ReturnsProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#RowFormatProperty">sqlglot.expressions.RowFormatProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#RowFormatDelimitedProperty">sqlglot.expressions.RowFormatDelimitedProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#RowFormatSerdeProperty">sqlglot.expressions.RowFormatSerdeProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SampleProperty">sqlglot.expressions.SampleProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SchemaCommentProperty">sqlglot.expressions.SchemaCommentProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SecureProperty">sqlglot.expressions.SecureProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SecurityProperty">sqlglot.expressions.SecurityProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SerdeProperties">sqlglot.expressions.SerdeProperties</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#Set">sqlglot.expressions.Set</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SettingsProperty">sqlglot.expressions.SettingsProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SetProperty">sqlglot.expressions.SetProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SetConfigProperty">sqlglot.expressions.SetConfigProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SharingProperty">sqlglot.expressions.SharingProperty</a>&#39;&gt;: &lt;Location.POST_EXPRESSION: &#39;POST_EXPRESSION&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SequenceProperties">sqlglot.expressions.SequenceProperties</a>&#39;&gt;: &lt;Location.POST_EXPRESSION: &#39;POST_EXPRESSION&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SortKeyProperty">sqlglot.expressions.SortKeyProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SqlReadWriteProperty">sqlglot.expressions.SqlReadWriteProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#SqlSecurityProperty">sqlglot.expressions.SqlSecurityProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#StabilityProperty">sqlglot.expressions.StabilityProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#StorageHandlerProperty">sqlglot.expressions.StorageHandlerProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#StreamingTableProperty">sqlglot.expressions.StreamingTableProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#StrictProperty">sqlglot.expressions.StrictProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#Tags">sqlglot.expressions.Tags</a>&#39;&gt;: &lt;Location.POST_WITH: &#39;POST_WITH&#39;&gt;, &lt;class &#39;<a href="../expressions.html#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ToTableProperty">sqlglot.expressions.ToTableProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#TransientProperty">sqlglot.expressions.TransientProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#TransformModelProperty">sqlglot.expressions.TransformModelProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#MergeTreeTTL">sqlglot.expressions.MergeTreeTTL</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#UnloggedProperty">sqlglot.expressions.UnloggedProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#UsingTemplateProperty">sqlglot.expressions.UsingTemplateProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ViewAttributeProperty">sqlglot.expressions.ViewAttributeProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#VolatileProperty">sqlglot.expressions.VolatileProperty</a>&#39;&gt;: &lt;Location.UNSUPPORTED: &#39;UNSUPPORTED&#39;&gt;, &lt;class &#39;<a href="../expressions.html#WithDataProperty">sqlglot.expressions.WithDataProperty</a>&#39;&gt;: &lt;Location.POST_EXPRESSION: &#39;POST_EXPRESSION&#39;&gt;, &lt;class &#39;<a href="../expressions.html#WithJournalTableProperty">sqlglot.expressions.WithJournalTableProperty</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;, &lt;class &#39;<a href="../expressions.html#WithProcedureOptions">sqlglot.expressions.WithProcedureOptions</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#WithSchemaBindingProperty">sqlglot.expressions.WithSchemaBindingProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#WithSystemVersioningProperty">sqlglot.expressions.WithSystemVersioningProperty</a>&#39;&gt;: &lt;Location.POST_SCHEMA: &#39;POST_SCHEMA&#39;&gt;, &lt;class &#39;<a href="../expressions.html#ForceProperty">sqlglot.expressions.ForceProperty</a>&#39;&gt;: &lt;Location.POST_CREATE: &#39;POST_CREATE&#39;&gt;, &lt;class &#39;<a href="../expressions.html#OnCluster">sqlglot.expressions.OnCluster</a>&#39;&gt;: &lt;Location.POST_NAME: &#39;POST_NAME&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.PROPERTIES_LOCATION"></a>
</div>
<div id="ClickHouse.Generator.ON_CLUSTER_TARGETS" class="classattr">
<div class="attr variable">
<span class="name">ON_CLUSTER_TARGETS</span> =
<span class="default_value">{&#39;FUNCTION&#39;, &#39;VIEW&#39;, &#39;NAMED COLLECTION&#39;, &#39;TABLE&#39;, &#39;DATABASE&#39;, &#39;DICTIONARY&#39;, &#39;INDEX&#39;, &#39;SCHEMA&#39;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.ON_CLUSTER_TARGETS"></a>
</div>
<div id="ClickHouse.Generator.NON_NULLABLE_TYPES" class="classattr">
<div class="attr variable">
<span class="name">NON_NULLABLE_TYPES</span> =
<input id="ClickHouse.Generator.NON_NULLABLE_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="ClickHouse.Generator.NON_NULLABLE_TYPES-view-value"></label><span class="default_value">{&lt;Type.POLYGON: &#39;POLYGON&#39;&gt;, &lt;Type.LINESTRING: &#39;LINESTRING&#39;&gt;, &lt;Type.STRUCT: &#39;STRUCT&#39;&gt;, &lt;Type.MAP: &#39;MAP&#39;&gt;, &lt;Type.MULTILINESTRING: &#39;MULTILINESTRING&#39;&gt;, &lt;Type.RING: &#39;RING&#39;&gt;, &lt;Type.POINT: &#39;POINT&#39;&gt;, &lt;Type.ARRAY: &#39;ARRAY&#39;&gt;, &lt;Type.MULTIPOLYGON: &#39;MULTIPOLYGON&#39;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.NON_NULLABLE_TYPES"></a>
</div>
<div id="ClickHouse.Generator.strtodate_sql" class="classattr">
<input id="ClickHouse.Generator.strtodate_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">strtodate_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.strtodate_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.strtodate_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.strtodate_sql-1154"><a href="#ClickHouse.Generator.strtodate_sql-1154"><span class="linenos">1154</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">strtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.strtodate_sql-1155"><a href="#ClickHouse.Generator.strtodate_sql-1155"><span class="linenos">1155</span></a> <span class="n">strtodate_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.strtodate_sql-1156"><a href="#ClickHouse.Generator.strtodate_sql-1156"><span class="linenos">1156</span></a>
</span><span id="ClickHouse.Generator.strtodate_sql-1157"><a href="#ClickHouse.Generator.strtodate_sql-1157"><span class="linenos">1157</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.strtodate_sql-1158"><a href="#ClickHouse.Generator.strtodate_sql-1158"><span class="linenos">1158</span></a> <span class="c1"># StrToDate returns DATEs in other dialects (eg. postgres), so</span>
</span><span id="ClickHouse.Generator.strtodate_sql-1159"><a href="#ClickHouse.Generator.strtodate_sql-1159"><span class="linenos">1159</span></a> <span class="c1"># this branch aims to improve the transpilation to clickhouse</span>
</span><span id="ClickHouse.Generator.strtodate_sql-1160"><a href="#ClickHouse.Generator.strtodate_sql-1160"><span class="linenos">1160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;DATE&quot;</span><span class="p">))</span>
</span><span id="ClickHouse.Generator.strtodate_sql-1161"><a href="#ClickHouse.Generator.strtodate_sql-1161"><span class="linenos">1161</span></a>
</span><span id="ClickHouse.Generator.strtodate_sql-1162"><a href="#ClickHouse.Generator.strtodate_sql-1162"><span class="linenos">1162</span></a> <span class="k">return</span> <span class="n">strtodate_sql</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.cast_sql" class="classattr">
<input id="ClickHouse.Generator.cast_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">cast_sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Cast">sqlglot.expressions.Cast</a></span>,</span><span class="param"> <span class="n">safe_prefix</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.cast_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.cast_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.cast_sql-1164"><a href="#ClickHouse.Generator.cast_sql-1164"><span class="linenos">1164</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.cast_sql-1165"><a href="#ClickHouse.Generator.cast_sql-1165"><span class="linenos">1165</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="ClickHouse.Generator.cast_sql-1166"><a href="#ClickHouse.Generator.cast_sql-1166"><span class="linenos">1166</span></a>
</span><span id="ClickHouse.Generator.cast_sql-1167"><a href="#ClickHouse.Generator.cast_sql-1167"><span class="linenos">1167</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="s2">&quot;datetime&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.cast_sql-1168"><a href="#ClickHouse.Generator.cast_sql-1168"><span class="linenos">1168</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.cast_sql-1169"><a href="#ClickHouse.Generator.cast_sql-1169"><span class="linenos">1169</span></a>
</span><span id="ClickHouse.Generator.cast_sql-1170"><a href="#ClickHouse.Generator.cast_sql-1170"><span class="linenos">1170</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="n">safe_prefix</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.trycast_sql" class="classattr">
<input id="ClickHouse.Generator.trycast_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">trycast_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.trycast_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.trycast_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.trycast_sql-1172"><a href="#ClickHouse.Generator.trycast_sql-1172"><span class="linenos">1172</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.trycast_sql-1173"><a href="#ClickHouse.Generator.trycast_sql-1173"><span class="linenos">1173</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</span>
</span><span id="ClickHouse.Generator.trycast_sql-1174"><a href="#ClickHouse.Generator.trycast_sql-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dtype</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.trycast_sql-1175"><a href="#ClickHouse.Generator.trycast_sql-1175"><span class="linenos">1175</span></a> <span class="c1"># Casting x into Nullable(T) appears to behave similarly to TRY_CAST(x AS T)</span>
</span><span id="ClickHouse.Generator.trycast_sql-1176"><a href="#ClickHouse.Generator.trycast_sql-1176"><span class="linenos">1176</span></a> <span class="n">dtype</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.trycast_sql-1177"><a href="#ClickHouse.Generator.trycast_sql-1177"><span class="linenos">1177</span></a>
</span><span id="ClickHouse.Generator.trycast_sql-1178"><a href="#ClickHouse.Generator.trycast_sql-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.likeproperty_sql" class="classattr">
<input id="ClickHouse.Generator.likeproperty_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">likeproperty_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#LikeProperty">sqlglot.expressions.LikeProperty</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.likeproperty_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.likeproperty_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.likeproperty_sql-1184"><a href="#ClickHouse.Generator.likeproperty_sql-1184"><span class="linenos">1184</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.likeproperty_sql-1185"><a href="#ClickHouse.Generator.likeproperty_sql-1185"><span class="linenos">1185</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.eq_sql" class="classattr">
<input id="ClickHouse.Generator.eq_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">eq_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#EQ">sqlglot.expressions.EQ</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.eq_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.eq_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.eq_sql-1204"><a href="#ClickHouse.Generator.eq_sql-1204"><span class="linenos">1204</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.eq_sql-1205"><a href="#ClickHouse.Generator.eq_sql-1205"><span class="linenos">1205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">eq_sql</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.neq_sql" class="classattr">
<input id="ClickHouse.Generator.neq_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">neq_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.neq_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.neq_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.neq_sql-1207"><a href="#ClickHouse.Generator.neq_sql-1207"><span class="linenos">1207</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.neq_sql-1208"><a href="#ClickHouse.Generator.neq_sql-1208"><span class="linenos">1208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_any_to_has</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">neq_sql</span><span class="p">,</span> <span class="s2">&quot;NOT &quot;</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.regexpilike_sql" class="classattr">
<input id="ClickHouse.Generator.regexpilike_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">regexpilike_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.regexpilike_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.regexpilike_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.regexpilike_sql-1210"><a href="#ClickHouse.Generator.regexpilike_sql-1210"><span class="linenos">1210</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">regexpilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.regexpilike_sql-1211"><a href="#ClickHouse.Generator.regexpilike_sql-1211"><span class="linenos">1211</span></a> <span class="c1"># Manually add a flag to make the search case-insensitive</span>
</span><span id="ClickHouse.Generator.regexpilike_sql-1212"><a href="#ClickHouse.Generator.regexpilike_sql-1212"><span class="linenos">1212</span></a> <span class="n">regex</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;CONCAT&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;(?i)&#39;&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.regexpilike_sql-1213"><a href="#ClickHouse.Generator.regexpilike_sql-1213"><span class="linenos">1213</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">regex</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.datatype_sql" class="classattr">
<input id="ClickHouse.Generator.datatype_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">datatype_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#DataType">sqlglot.expressions.DataType</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.datatype_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.datatype_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.datatype_sql-1215"><a href="#ClickHouse.Generator.datatype_sql-1215"><span class="linenos">1215</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.datatype_sql-1216"><a href="#ClickHouse.Generator.datatype_sql-1216"><span class="linenos">1216</span></a> <span class="c1"># String is the standard ClickHouse type, every other variant is just an alias.</span>
</span><span id="ClickHouse.Generator.datatype_sql-1217"><a href="#ClickHouse.Generator.datatype_sql-1217"><span class="linenos">1217</span></a> <span class="c1"># Additionally, any supplied length parameter will be ignored.</span>
</span><span id="ClickHouse.Generator.datatype_sql-1218"><a href="#ClickHouse.Generator.datatype_sql-1218"><span class="linenos">1218</span></a> <span class="c1">#</span>
</span><span id="ClickHouse.Generator.datatype_sql-1219"><a href="#ClickHouse.Generator.datatype_sql-1219"><span class="linenos">1219</span></a> <span class="c1"># https://clickhouse.com/docs/en/sql-reference/data-types/string</span>
</span><span id="ClickHouse.Generator.datatype_sql-1220"><a href="#ClickHouse.Generator.datatype_sql-1220"><span class="linenos">1220</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_TYPE_MAPPING</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.datatype_sql-1221"><a href="#ClickHouse.Generator.datatype_sql-1221"><span class="linenos">1221</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="s2">&quot;String&quot;</span>
</span><span id="ClickHouse.Generator.datatype_sql-1222"><a href="#ClickHouse.Generator.datatype_sql-1222"><span class="linenos">1222</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.datatype_sql-1223"><a href="#ClickHouse.Generator.datatype_sql-1223"><span class="linenos">1223</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.datatype_sql-1224"><a href="#ClickHouse.Generator.datatype_sql-1224"><span class="linenos">1224</span></a>
</span><span id="ClickHouse.Generator.datatype_sql-1225"><a href="#ClickHouse.Generator.datatype_sql-1225"><span class="linenos">1225</span></a> <span class="c1"># This section changes the type to `Nullable(...)` if the following conditions hold:</span>
</span><span id="ClickHouse.Generator.datatype_sql-1226"><a href="#ClickHouse.Generator.datatype_sql-1226"><span class="linenos">1226</span></a> <span class="c1"># - It&#39;s marked as nullable - this ensures we won&#39;t wrap ClickHouse types with `Nullable`</span>
</span><span id="ClickHouse.Generator.datatype_sql-1227"><a href="#ClickHouse.Generator.datatype_sql-1227"><span class="linenos">1227</span></a> <span class="c1"># and change their semantics</span>
</span><span id="ClickHouse.Generator.datatype_sql-1228"><a href="#ClickHouse.Generator.datatype_sql-1228"><span class="linenos">1228</span></a> <span class="c1"># - It&#39;s not the key type of a `Map`. This is because ClickHouse enforces the following</span>
</span><span id="ClickHouse.Generator.datatype_sql-1229"><a href="#ClickHouse.Generator.datatype_sql-1229"><span class="linenos">1229</span></a> <span class="c1"># constraint: &quot;Type of Map key must be a type, that can be represented by integer or</span>
</span><span id="ClickHouse.Generator.datatype_sql-1230"><a href="#ClickHouse.Generator.datatype_sql-1230"><span class="linenos">1230</span></a> <span class="c1"># String or FixedString (possibly LowCardinality) or UUID or IPv6&quot;</span>
</span><span id="ClickHouse.Generator.datatype_sql-1231"><a href="#ClickHouse.Generator.datatype_sql-1231"><span class="linenos">1231</span></a> <span class="c1"># - It&#39;s not a composite type, e.g. `Nullable(Array(...))` is not a valid type</span>
</span><span id="ClickHouse.Generator.datatype_sql-1232"><a href="#ClickHouse.Generator.datatype_sql-1232"><span class="linenos">1232</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
</span><span id="ClickHouse.Generator.datatype_sql-1233"><a href="#ClickHouse.Generator.datatype_sql-1233"><span class="linenos">1233</span></a> <span class="n">nullable</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nullable&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.datatype_sql-1234"><a href="#ClickHouse.Generator.datatype_sql-1234"><span class="linenos">1234</span></a> <span class="k">if</span> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">True</span> <span class="ow">or</span> <span class="p">(</span>
</span><span id="ClickHouse.Generator.datatype_sql-1235"><a href="#ClickHouse.Generator.datatype_sql-1235"><span class="linenos">1235</span></a> <span class="n">nullable</span> <span class="ow">is</span> <span class="kc">None</span>
</span><span id="ClickHouse.Generator.datatype_sql-1236"><a href="#ClickHouse.Generator.datatype_sql-1236"><span class="linenos">1236</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span>
</span><span id="ClickHouse.Generator.datatype_sql-1237"><a href="#ClickHouse.Generator.datatype_sql-1237"><span class="linenos">1237</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.datatype_sql-1238"><a href="#ClickHouse.Generator.datatype_sql-1238"><span class="linenos">1238</span></a> <span class="ow">and</span> <span class="n">parent</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.datatype_sql-1239"><a href="#ClickHouse.Generator.datatype_sql-1239"><span class="linenos">1239</span></a> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">index</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.datatype_sql-1240"><a href="#ClickHouse.Generator.datatype_sql-1240"><span class="linenos">1240</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Generator.datatype_sql-1241"><a href="#ClickHouse.Generator.datatype_sql-1241"><span class="linenos">1241</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">NON_NULLABLE_TYPES</span><span class="p">,</span> <span class="n">check_nullable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.datatype_sql-1242"><a href="#ClickHouse.Generator.datatype_sql-1242"><span class="linenos">1242</span></a> <span class="p">):</span>
</span><span id="ClickHouse.Generator.datatype_sql-1243"><a href="#ClickHouse.Generator.datatype_sql-1243"><span class="linenos">1243</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Nullable(</span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">)&quot;</span>
</span><span id="ClickHouse.Generator.datatype_sql-1244"><a href="#ClickHouse.Generator.datatype_sql-1244"><span class="linenos">1244</span></a>
</span><span id="ClickHouse.Generator.datatype_sql-1245"><a href="#ClickHouse.Generator.datatype_sql-1245"><span class="linenos">1245</span></a> <span class="k">return</span> <span class="n">dtype</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.cte_sql" class="classattr">
<input id="ClickHouse.Generator.cte_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">cte_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#CTE">sqlglot.expressions.CTE</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.cte_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.cte_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.cte_sql-1247"><a href="#ClickHouse.Generator.cte_sql-1247"><span class="linenos">1247</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.cte_sql-1248"><a href="#ClickHouse.Generator.cte_sql-1248"><span class="linenos">1248</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scalar&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.cte_sql-1249"><a href="#ClickHouse.Generator.cte_sql-1249"><span class="linenos">1249</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.cte_sql-1250"><a href="#ClickHouse.Generator.cte_sql-1250"><span class="linenos">1250</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.cte_sql-1251"><a href="#ClickHouse.Generator.cte_sql-1251"><span class="linenos">1251</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator.cte_sql-1252"><a href="#ClickHouse.Generator.cte_sql-1252"><span class="linenos">1252</span></a>
</span><span id="ClickHouse.Generator.cte_sql-1253"><a href="#ClickHouse.Generator.cte_sql-1253"><span class="linenos">1253</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">cte_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.after_limit_modifiers" class="classattr">
<input id="ClickHouse.Generator.after_limit_modifiers-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">after_limit_modifiers</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.after_limit_modifiers-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.after_limit_modifiers"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.after_limit_modifiers-1255"><a href="#ClickHouse.Generator.after_limit_modifiers-1255"><span class="linenos">1255</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">after_limit_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1256"><a href="#ClickHouse.Generator.after_limit_modifiers-1256"><span class="linenos">1256</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">after_limit_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1257"><a href="#ClickHouse.Generator.after_limit_modifiers-1257"><span class="linenos">1257</span></a> <span class="p">(</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1258"><a href="#ClickHouse.Generator.after_limit_modifiers-1258"><span class="linenos">1258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;SETTINGS &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;settings&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1259"><a href="#ClickHouse.Generator.after_limit_modifiers-1259"><span class="linenos">1259</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;settings&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1260"><a href="#ClickHouse.Generator.after_limit_modifiers-1260"><span class="linenos">1260</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1261"><a href="#ClickHouse.Generator.after_limit_modifiers-1261"><span class="linenos">1261</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1262"><a href="#ClickHouse.Generator.after_limit_modifiers-1262"><span class="linenos">1262</span></a> <span class="p">(</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1263"><a href="#ClickHouse.Generator.after_limit_modifiers-1263"><span class="linenos">1263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">&quot;FORMAT &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1264"><a href="#ClickHouse.Generator.after_limit_modifiers-1264"><span class="linenos">1264</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;format&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1265"><a href="#ClickHouse.Generator.after_limit_modifiers-1265"><span class="linenos">1265</span></a> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1266"><a href="#ClickHouse.Generator.after_limit_modifiers-1266"><span class="linenos">1266</span></a> <span class="p">),</span>
</span><span id="ClickHouse.Generator.after_limit_modifiers-1267"><a href="#ClickHouse.Generator.after_limit_modifiers-1267"><span class="linenos">1267</span></a> <span class="p">]</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.placeholder_sql" class="classattr">
<input id="ClickHouse.Generator.placeholder_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">placeholder_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Placeholder">sqlglot.expressions.Placeholder</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.placeholder_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.placeholder_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.placeholder_sql-1269"><a href="#ClickHouse.Generator.placeholder_sql-1269"><span class="linenos">1269</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.placeholder_sql-1270"><a href="#ClickHouse.Generator.placeholder_sql-1270"><span class="linenos">1270</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">{{</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;kind&#39;</span><span class="p">)</span><span class="si">}</span><span class="se">}}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.oncluster_sql" class="classattr">
<input id="ClickHouse.Generator.oncluster_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">oncluster_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#OnCluster">sqlglot.expressions.OnCluster</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.oncluster_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.oncluster_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.oncluster_sql-1272"><a href="#ClickHouse.Generator.oncluster_sql-1272"><span class="linenos">1272</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">oncluster_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCluster</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.oncluster_sql-1273"><a href="#ClickHouse.Generator.oncluster_sql-1273"><span class="linenos">1273</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ON CLUSTER </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.createable_sql" class="classattr">
<input id="ClickHouse.Generator.createable_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">createable_sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Create">sqlglot.expressions.Create</a></span>,</span><span class="param"> <span class="n">locations</span><span class="p">:</span> <span class="n">DefaultDict</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.createable_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.createable_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.createable_sql-1275"><a href="#ClickHouse.Generator.createable_sql-1275"><span class="linenos">1275</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">createable_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> <span class="n">locations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.createable_sql-1276"><a href="#ClickHouse.Generator.createable_sql-1276"><span class="linenos">1276</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ON_CLUSTER_TARGETS</span> <span class="ow">and</span> <span class="n">locations</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
</span><span id="ClickHouse.Generator.createable_sql-1277"><a href="#ClickHouse.Generator.createable_sql-1277"><span class="linenos">1277</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span>
</span><span id="ClickHouse.Generator.createable_sql-1278"><a href="#ClickHouse.Generator.createable_sql-1278"><span class="linenos">1278</span></a> <span class="p">):</span>
</span><span id="ClickHouse.Generator.createable_sql-1279"><a href="#ClickHouse.Generator.createable_sql-1279"><span class="linenos">1279</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
</span><span id="ClickHouse.Generator.createable_sql-1280"><a href="#ClickHouse.Generator.createable_sql-1280"><span class="linenos">1280</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span><span class="p">,</span>
</span><span id="ClickHouse.Generator.createable_sql-1281"><a href="#ClickHouse.Generator.createable_sql-1281"><span class="linenos">1281</span></a> <span class="s2">&quot;this&quot;</span><span class="p">,</span>
</span><span id="ClickHouse.Generator.createable_sql-1282"><a href="#ClickHouse.Generator.createable_sql-1282"><span class="linenos">1282</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Generator.createable_sql-1283"><a href="#ClickHouse.Generator.createable_sql-1283"><span class="linenos">1283</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
</span><span id="ClickHouse.Generator.createable_sql-1284"><a href="#ClickHouse.Generator.createable_sql-1284"><span class="linenos">1284</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">locations</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]]</span>
</span><span id="ClickHouse.Generator.createable_sql-1285"><a href="#ClickHouse.Generator.createable_sql-1285"><span class="linenos">1285</span></a> <span class="p">)</span>
</span><span id="ClickHouse.Generator.createable_sql-1286"><a href="#ClickHouse.Generator.createable_sql-1286"><span class="linenos">1286</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema_columns_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.createable_sql-1287"><a href="#ClickHouse.Generator.createable_sql-1287"><span class="linenos">1287</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this_schema</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.createable_sql-1288"><a href="#ClickHouse.Generator.createable_sql-1288"><span class="linenos">1288</span></a>
</span><span id="ClickHouse.Generator.createable_sql-1289"><a href="#ClickHouse.Generator.createable_sql-1289"><span class="linenos">1289</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">this_name</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this_properties</span><span class="si">}{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator.createable_sql-1290"><a href="#ClickHouse.Generator.createable_sql-1290"><span class="linenos">1290</span></a>
</span><span id="ClickHouse.Generator.createable_sql-1291"><a href="#ClickHouse.Generator.createable_sql-1291"><span class="linenos">1291</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">createable_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">locations</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.create_sql" class="classattr">
<input id="ClickHouse.Generator.create_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">create_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Create">sqlglot.expressions.Create</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.create_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.create_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.create_sql-1293"><a href="#ClickHouse.Generator.create_sql-1293"><span class="linenos">1293</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">create_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.create_sql-1294"><a href="#ClickHouse.Generator.create_sql-1294"><span class="linenos">1294</span></a> <span class="c1"># The comment property comes last in CTAS statements, i.e. after the query</span>
</span><span id="ClickHouse.Generator.create_sql-1295"><a href="#ClickHouse.Generator.create_sql-1295"><span class="linenos">1295</span></a> <span class="n">query</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
</span><span id="ClickHouse.Generator.create_sql-1296"><a href="#ClickHouse.Generator.create_sql-1296"><span class="linenos">1296</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.create_sql-1297"><a href="#ClickHouse.Generator.create_sql-1297"><span class="linenos">1297</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.create_sql-1298"><a href="#ClickHouse.Generator.create_sql-1298"><span class="linenos">1298</span></a> <span class="k">if</span> <span class="n">comment_prop</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.create_sql-1299"><a href="#ClickHouse.Generator.create_sql-1299"><span class="linenos">1299</span></a> <span class="n">comment_prop</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="ClickHouse.Generator.create_sql-1300"><a href="#ClickHouse.Generator.create_sql-1300"><span class="linenos">1300</span></a> <span class="n">query</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">query</span><span class="p">))</span>
</span><span id="ClickHouse.Generator.create_sql-1301"><a href="#ClickHouse.Generator.create_sql-1301"><span class="linenos">1301</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.create_sql-1302"><a href="#ClickHouse.Generator.create_sql-1302"><span class="linenos">1302</span></a> <span class="n">comment_prop</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="ClickHouse.Generator.create_sql-1303"><a href="#ClickHouse.Generator.create_sql-1303"><span class="linenos">1303</span></a>
</span><span id="ClickHouse.Generator.create_sql-1304"><a href="#ClickHouse.Generator.create_sql-1304"><span class="linenos">1304</span></a> <span class="n">create_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">create_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.create_sql-1305"><a href="#ClickHouse.Generator.create_sql-1305"><span class="linenos">1305</span></a>
</span><span id="ClickHouse.Generator.create_sql-1306"><a href="#ClickHouse.Generator.create_sql-1306"><span class="linenos">1306</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comment_prop</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.create_sql-1307"><a href="#ClickHouse.Generator.create_sql-1307"><span class="linenos">1307</span></a> <span class="n">comment_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">comment_sql</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.create_sql-1308"><a href="#ClickHouse.Generator.create_sql-1308"><span class="linenos">1308</span></a>
</span><span id="ClickHouse.Generator.create_sql-1309"><a href="#ClickHouse.Generator.create_sql-1309"><span class="linenos">1309</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">create_sql</span><span class="si">}{</span><span class="n">comment_sql</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.prewhere_sql" class="classattr">
<input id="ClickHouse.Generator.prewhere_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">prewhere_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#PreWhere">sqlglot.expressions.PreWhere</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.prewhere_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.prewhere_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.prewhere_sql-1311"><a href="#ClickHouse.Generator.prewhere_sql-1311"><span class="linenos">1311</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">prewhere_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.prewhere_sql-1312"><a href="#ClickHouse.Generator.prewhere_sql-1312"><span class="linenos">1312</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">))</span>
</span><span id="ClickHouse.Generator.prewhere_sql-1313"><a href="#ClickHouse.Generator.prewhere_sql-1313"><span class="linenos">1313</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">&#39;PREWHERE&#39;</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.indexcolumnconstraint_sql" class="classattr">
<input id="ClickHouse.Generator.indexcolumnconstraint_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">indexcolumnconstraint_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#IndexColumnConstraint">sqlglot.expressions.IndexColumnConstraint</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.indexcolumnconstraint_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.indexcolumnconstraint_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1315"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1315"><span class="linenos">1315</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">indexcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexColumnConstraint</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1316"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1316"><span class="linenos">1316</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1317"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1317"><span class="linenos">1317</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1318"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1318"><span class="linenos">1318</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1319"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1319"><span class="linenos">1319</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">expr</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expr</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1320"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1320"><span class="linenos">1320</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;index_type&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1321"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1321"><span class="linenos">1321</span></a> <span class="n">index_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; TYPE </span><span class="si">{</span><span class="n">index_type</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">index_type</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1322"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1322"><span class="linenos">1322</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;granularity&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1323"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1323"><span class="linenos">1323</span></a> <span class="n">granularity</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; GRANULARITY </span><span class="si">{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">granularity</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1324"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1324"><span class="linenos">1324</span></a>
</span><span id="ClickHouse.Generator.indexcolumnconstraint_sql-1325"><a href="#ClickHouse.Generator.indexcolumnconstraint_sql-1325"><span class="linenos">1325</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;INDEX</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expr</span><span class="si">}{</span><span class="n">index_type</span><span class="si">}{</span><span class="n">granularity</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.partition_sql" class="classattr">
<input id="ClickHouse.Generator.partition_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">partition_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Partition">sqlglot.expressions.Partition</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.partition_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.partition_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.partition_sql-1327"><a href="#ClickHouse.Generator.partition_sql-1327"><span class="linenos">1327</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.partition_sql-1328"><a href="#ClickHouse.Generator.partition_sql-1328"><span class="linenos">1328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PARTITION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.partitionid_sql" class="classattr">
<input id="ClickHouse.Generator.partitionid_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">partitionid_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#PartitionId">sqlglot.expressions.PartitionId</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.partitionid_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.partitionid_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.partitionid_sql-1330"><a href="#ClickHouse.Generator.partitionid_sql-1330"><span class="linenos">1330</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">partitionid_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionId</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.partitionid_sql-1331"><a href="#ClickHouse.Generator.partitionid_sql-1331"><span class="linenos">1331</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ID </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.replacepartition_sql" class="classattr">
<input id="ClickHouse.Generator.replacepartition_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">replacepartition_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#ReplacePartition">sqlglot.expressions.ReplacePartition</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.replacepartition_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.replacepartition_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.replacepartition_sql-1333"><a href="#ClickHouse.Generator.replacepartition_sql-1333"><span class="linenos">1333</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">replacepartition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ReplacePartition</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.replacepartition_sql-1334"><a href="#ClickHouse.Generator.replacepartition_sql-1334"><span class="linenos">1334</span></a> <span class="k">return</span> <span class="p">(</span>
</span><span id="ClickHouse.Generator.replacepartition_sql-1335"><a href="#ClickHouse.Generator.replacepartition_sql-1335"><span class="linenos">1335</span></a> <span class="sa">f</span><span class="s2">&quot;REPLACE </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;source&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="ClickHouse.Generator.replacepartition_sql-1336"><a href="#ClickHouse.Generator.replacepartition_sql-1336"><span class="linenos">1336</span></a> <span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.projectiondef_sql" class="classattr">
<input id="ClickHouse.Generator.projectiondef_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">projectiondef_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#ProjectionDef">sqlglot.expressions.ProjectionDef</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.projectiondef_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.projectiondef_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.projectiondef_sql-1338"><a href="#ClickHouse.Generator.projectiondef_sql-1338"><span class="linenos">1338</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">projectiondef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ProjectionDef</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.projectiondef_sql-1339"><a href="#ClickHouse.Generator.projectiondef_sql-1339"><span class="linenos">1339</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;PROJECTION </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.is_sql" class="classattr">
<input id="ClickHouse.Generator.is_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">is_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Is">sqlglot.expressions.Is</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.is_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.is_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.is_sql-1341"><a href="#ClickHouse.Generator.is_sql-1341"><span class="linenos">1341</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.is_sql-1342"><a href="#ClickHouse.Generator.is_sql-1342"><span class="linenos">1342</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">is_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.is_sql-1343"><a href="#ClickHouse.Generator.is_sql-1343"><span class="linenos">1343</span></a>
</span><span id="ClickHouse.Generator.is_sql-1344"><a href="#ClickHouse.Generator.is_sql-1344"><span class="linenos">1344</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.is_sql-1345"><a href="#ClickHouse.Generator.is_sql-1345"><span class="linenos">1345</span></a> <span class="c1"># value IS NOT NULL -&gt; NOT (value IS NULL)</span>
</span><span id="ClickHouse.Generator.is_sql-1346"><a href="#ClickHouse.Generator.is_sql-1346"><span class="linenos">1346</span></a> <span class="n">is_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">is_sql</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.is_sql-1347"><a href="#ClickHouse.Generator.is_sql-1347"><span class="linenos">1347</span></a>
</span><span id="ClickHouse.Generator.is_sql-1348"><a href="#ClickHouse.Generator.is_sql-1348"><span class="linenos">1348</span></a> <span class="k">return</span> <span class="n">is_sql</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.in_sql" class="classattr">
<input id="ClickHouse.Generator.in_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">in_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#In">sqlglot.expressions.In</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.in_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.in_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.in_sql-1350"><a href="#ClickHouse.Generator.in_sql-1350"><span class="linenos">1350</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.in_sql-1351"><a href="#ClickHouse.Generator.in_sql-1351"><span class="linenos">1351</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">in_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.in_sql-1352"><a href="#ClickHouse.Generator.in_sql-1352"><span class="linenos">1352</span></a>
</span><span id="ClickHouse.Generator.in_sql-1353"><a href="#ClickHouse.Generator.in_sql-1353"><span class="linenos">1353</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.in_sql-1354"><a href="#ClickHouse.Generator.in_sql-1354"><span class="linenos">1354</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="n">in_sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;GLOBAL IN&quot;</span><span class="p">,</span> <span class="s2">&quot;GLOBAL NOT IN&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.in_sql-1355"><a href="#ClickHouse.Generator.in_sql-1355"><span class="linenos">1355</span></a>
</span><span id="ClickHouse.Generator.in_sql-1356"><a href="#ClickHouse.Generator.in_sql-1356"><span class="linenos">1356</span></a> <span class="k">return</span> <span class="n">in_sql</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.not_sql" class="classattr">
<input id="ClickHouse.Generator.not_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">not_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Not">sqlglot.expressions.Not</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.not_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.not_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.not_sql-1358"><a href="#ClickHouse.Generator.not_sql-1358"><span class="linenos">1358</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.not_sql-1359"><a href="#ClickHouse.Generator.not_sql-1359"><span class="linenos">1359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;is_global&quot;</span><span class="p">):</span>
</span><span id="ClickHouse.Generator.not_sql-1360"><a href="#ClickHouse.Generator.not_sql-1360"><span class="linenos">1360</span></a> <span class="c1"># let `GLOBAL IN` child interpose `NOT`</span>
</span><span id="ClickHouse.Generator.not_sql-1361"><a href="#ClickHouse.Generator.not_sql-1361"><span class="linenos">1361</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.not_sql-1362"><a href="#ClickHouse.Generator.not_sql-1362"><span class="linenos">1362</span></a>
</span><span id="ClickHouse.Generator.not_sql-1363"><a href="#ClickHouse.Generator.not_sql-1363"><span class="linenos">1363</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">not_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.values_sql" class="classattr">
<input id="ClickHouse.Generator.values_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">values_sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Values">sqlglot.expressions.Values</a></span>,</span><span class="param"> <span class="n">values_as_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="ClickHouse.Generator.values_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ClickHouse.Generator.values_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ClickHouse.Generator.values_sql-1365"><a href="#ClickHouse.Generator.values_sql-1365"><span class="linenos">1365</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">values_as_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.values_sql-1366"><a href="#ClickHouse.Generator.values_sql-1366"><span class="linenos">1366</span></a> <span class="c1"># If the VALUES clause contains tuples of expressions, we need to treat it</span>
</span><span id="ClickHouse.Generator.values_sql-1367"><a href="#ClickHouse.Generator.values_sql-1367"><span class="linenos">1367</span></a> <span class="c1"># as a table since Clickhouse will automatically alias it as such.</span>
</span><span id="ClickHouse.Generator.values_sql-1368"><a href="#ClickHouse.Generator.values_sql-1368"><span class="linenos">1368</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.values_sql-1369"><a href="#ClickHouse.Generator.values_sql-1369"><span class="linenos">1369</span></a>
</span><span id="ClickHouse.Generator.values_sql-1370"><a href="#ClickHouse.Generator.values_sql-1370"><span class="linenos">1370</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.values_sql-1371"><a href="#ClickHouse.Generator.values_sql-1371"><span class="linenos">1371</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="ClickHouse.Generator.values_sql-1372"><a href="#ClickHouse.Generator.values_sql-1372"><span class="linenos">1372</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="nb">any</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">)</span>
</span><span id="ClickHouse.Generator.values_sql-1373"><a href="#ClickHouse.Generator.values_sql-1373"><span class="linenos">1373</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ClickHouse.Generator.values_sql-1374"><a href="#ClickHouse.Generator.values_sql-1374"><span class="linenos">1374</span></a> <span class="n">values_as_table</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="ClickHouse.Generator.values_sql-1375"><a href="#ClickHouse.Generator.values_sql-1375"><span class="linenos">1375</span></a>
</span><span id="ClickHouse.Generator.values_sql-1376"><a href="#ClickHouse.Generator.values_sql-1376"><span class="linenos">1376</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">values_as_table</span><span class="o">=</span><span class="n">values_as_table</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="ClickHouse.Generator.SELECT_KINDS" class="classattr">
<div class="attr variable">
<span class="name">SELECT_KINDS</span><span class="annotation">: Tuple[str, ...]</span> =
<span class="default_value">()</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.SELECT_KINDS"></a>
</div>
<div id="ClickHouse.Generator.TRY_SUPPORTED" class="classattr">
<div class="attr variable">
<span class="name">TRY_SUPPORTED</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.TRY_SUPPORTED"></a>
</div>
<div id="ClickHouse.Generator.SUPPORTS_UESCAPE" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_UESCAPE</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.SUPPORTS_UESCAPE"></a>
</div>
<div id="ClickHouse.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS" class="classattr">
<div class="attr variable">
<span class="name">AFTER_HAVING_MODIFIER_TRANSFORMS</span> =
<span class="default_value">{&#39;windows&#39;: &lt;function Generator.&lt;lambda&gt;&gt;, &#39;qualify&#39;: &lt;function Generator.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#ClickHouse.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS"></a>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt><a href="../generator.html#Generator">sqlglot.generator.Generator</a></dt>
<dd id="ClickHouse.Generator.__init__" class="function"><a href="../generator.html#Generator.__init__">Generator</a></dd>
<dd id="ClickHouse.Generator.NULL_ORDERING_SUPPORTED" class="variable"><a href="../generator.html#Generator.NULL_ORDERING_SUPPORTED">NULL_ORDERING_SUPPORTED</a></dd>
<dd id="ClickHouse.Generator.IGNORE_NULLS_IN_FUNC" class="variable"><a href="../generator.html#Generator.IGNORE_NULLS_IN_FUNC">IGNORE_NULLS_IN_FUNC</a></dd>
<dd id="ClickHouse.Generator.LOCKING_READS_SUPPORTED" class="variable"><a href="../generator.html#Generator.LOCKING_READS_SUPPORTED">LOCKING_READS_SUPPORTED</a></dd>
<dd id="ClickHouse.Generator.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE" class="variable"><a href="../generator.html#Generator.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE">EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE</a></dd>
<dd id="ClickHouse.Generator.CREATE_FUNCTION_RETURN_AS" class="variable"><a href="../generator.html#Generator.CREATE_FUNCTION_RETURN_AS">CREATE_FUNCTION_RETURN_AS</a></dd>
<dd id="ClickHouse.Generator.MATCHED_BY_SOURCE" class="variable"><a href="../generator.html#Generator.MATCHED_BY_SOURCE">MATCHED_BY_SOURCE</a></dd>
<dd id="ClickHouse.Generator.SINGLE_STRING_INTERVAL" class="variable"><a href="../generator.html#Generator.SINGLE_STRING_INTERVAL">SINGLE_STRING_INTERVAL</a></dd>
<dd id="ClickHouse.Generator.INTERVAL_ALLOWS_PLURAL_FORM" class="variable"><a href="../generator.html#Generator.INTERVAL_ALLOWS_PLURAL_FORM">INTERVAL_ALLOWS_PLURAL_FORM</a></dd>
<dd id="ClickHouse.Generator.LIMIT_FETCH" class="variable"><a href="../generator.html#Generator.LIMIT_FETCH">LIMIT_FETCH</a></dd>
<dd id="ClickHouse.Generator.LIMIT_ONLY_LITERALS" class="variable"><a href="../generator.html#Generator.LIMIT_ONLY_LITERALS">LIMIT_ONLY_LITERALS</a></dd>
<dd id="ClickHouse.Generator.RENAME_TABLE_WITH_DB" class="variable"><a href="../generator.html#Generator.RENAME_TABLE_WITH_DB">RENAME_TABLE_WITH_DB</a></dd>
<dd id="ClickHouse.Generator.INDEX_ON" class="variable"><a href="../generator.html#Generator.INDEX_ON">INDEX_ON</a></dd>
<dd id="ClickHouse.Generator.QUERY_HINT_SEP" class="variable"><a href="../generator.html#Generator.QUERY_HINT_SEP">QUERY_HINT_SEP</a></dd>
<dd id="ClickHouse.Generator.IS_BOOL_ALLOWED" class="variable"><a href="../generator.html#Generator.IS_BOOL_ALLOWED">IS_BOOL_ALLOWED</a></dd>
<dd id="ClickHouse.Generator.DUPLICATE_KEY_UPDATE_WITH_SET" class="variable"><a href="../generator.html#Generator.DUPLICATE_KEY_UPDATE_WITH_SET">DUPLICATE_KEY_UPDATE_WITH_SET</a></dd>
<dd id="ClickHouse.Generator.LIMIT_IS_TOP" class="variable"><a href="../generator.html#Generator.LIMIT_IS_TOP">LIMIT_IS_TOP</a></dd>
<dd id="ClickHouse.Generator.RETURNING_END" class="variable"><a href="../generator.html#Generator.RETURNING_END">RETURNING_END</a></dd>
<dd id="ClickHouse.Generator.EXTRACT_ALLOWS_QUOTES" class="variable"><a href="../generator.html#Generator.EXTRACT_ALLOWS_QUOTES">EXTRACT_ALLOWS_QUOTES</a></dd>
<dd id="ClickHouse.Generator.TZ_TO_WITH_TIME_ZONE" class="variable"><a href="../generator.html#Generator.TZ_TO_WITH_TIME_ZONE">TZ_TO_WITH_TIME_ZONE</a></dd>
<dd id="ClickHouse.Generator.VALUES_AS_TABLE" class="variable"><a href="../generator.html#Generator.VALUES_AS_TABLE">VALUES_AS_TABLE</a></dd>
<dd id="ClickHouse.Generator.ALTER_TABLE_INCLUDE_COLUMN_KEYWORD" class="variable"><a href="../generator.html#Generator.ALTER_TABLE_INCLUDE_COLUMN_KEYWORD">ALTER_TABLE_INCLUDE_COLUMN_KEYWORD</a></dd>
<dd id="ClickHouse.Generator.UNNEST_WITH_ORDINALITY" class="variable"><a href="../generator.html#Generator.UNNEST_WITH_ORDINALITY">UNNEST_WITH_ORDINALITY</a></dd>
<dd id="ClickHouse.Generator.AGGREGATE_FILTER_SUPPORTED" class="variable"><a href="../generator.html#Generator.AGGREGATE_FILTER_SUPPORTED">AGGREGATE_FILTER_SUPPORTED</a></dd>
<dd id="ClickHouse.Generator.SEMI_ANTI_JOIN_WITH_SIDE" class="variable"><a href="../generator.html#Generator.SEMI_ANTI_JOIN_WITH_SIDE">SEMI_ANTI_JOIN_WITH_SIDE</a></dd>
<dd id="ClickHouse.Generator.COMPUTED_COLUMN_WITH_TYPE" class="variable"><a href="../generator.html#Generator.COMPUTED_COLUMN_WITH_TYPE">COMPUTED_COLUMN_WITH_TYPE</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_TABLE_COPY" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_COPY">SUPPORTS_TABLE_COPY</a></dd>
<dd id="ClickHouse.Generator.TABLESAMPLE_WITH_METHOD" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_WITH_METHOD">TABLESAMPLE_WITH_METHOD</a></dd>
<dd id="ClickHouse.Generator.TABLESAMPLE_SEED_KEYWORD" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_SEED_KEYWORD">TABLESAMPLE_SEED_KEYWORD</a></dd>
<dd id="ClickHouse.Generator.COLLATE_IS_FUNC" class="variable"><a href="../generator.html#Generator.COLLATE_IS_FUNC">COLLATE_IS_FUNC</a></dd>
<dd id="ClickHouse.Generator.DATA_TYPE_SPECIFIERS_ALLOWED" class="variable"><a href="../generator.html#Generator.DATA_TYPE_SPECIFIERS_ALLOWED">DATA_TYPE_SPECIFIERS_ALLOWED</a></dd>
<dd id="ClickHouse.Generator.ENSURE_BOOLS" class="variable"><a href="../generator.html#Generator.ENSURE_BOOLS">ENSURE_BOOLS</a></dd>
<dd id="ClickHouse.Generator.CTE_RECURSIVE_KEYWORD_REQUIRED" class="variable"><a href="../generator.html#Generator.CTE_RECURSIVE_KEYWORD_REQUIRED">CTE_RECURSIVE_KEYWORD_REQUIRED</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_SINGLE_ARG_CONCAT" class="variable"><a href="../generator.html#Generator.SUPPORTS_SINGLE_ARG_CONCAT">SUPPORTS_SINGLE_ARG_CONCAT</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_TABLE_ALIAS_COLUMNS" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_ALIAS_COLUMNS">SUPPORTS_TABLE_ALIAS_COLUMNS</a></dd>
<dd id="ClickHouse.Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS" class="variable"><a href="../generator.html#Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS">UNPIVOT_ALIASES_ARE_IDENTIFIERS</a></dd>
<dd id="ClickHouse.Generator.JSON_KEY_VALUE_PAIR_SEP" class="variable"><a href="../generator.html#Generator.JSON_KEY_VALUE_PAIR_SEP">JSON_KEY_VALUE_PAIR_SEP</a></dd>
<dd id="ClickHouse.Generator.INSERT_OVERWRITE" class="variable"><a href="../generator.html#Generator.INSERT_OVERWRITE">INSERT_OVERWRITE</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_SELECT_INTO" class="variable"><a href="../generator.html#Generator.SUPPORTS_SELECT_INTO">SUPPORTS_SELECT_INTO</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_UNLOGGED_TABLES" class="variable"><a href="../generator.html#Generator.SUPPORTS_UNLOGGED_TABLES">SUPPORTS_UNLOGGED_TABLES</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_CREATE_TABLE_LIKE" class="variable"><a href="../generator.html#Generator.SUPPORTS_CREATE_TABLE_LIKE">SUPPORTS_CREATE_TABLE_LIKE</a></dd>
<dd id="ClickHouse.Generator.LIKE_PROPERTY_INSIDE_SCHEMA" class="variable"><a href="../generator.html#Generator.LIKE_PROPERTY_INSIDE_SCHEMA">LIKE_PROPERTY_INSIDE_SCHEMA</a></dd>
<dd id="ClickHouse.Generator.MULTI_ARG_DISTINCT" class="variable"><a href="../generator.html#Generator.MULTI_ARG_DISTINCT">MULTI_ARG_DISTINCT</a></dd>
<dd id="ClickHouse.Generator.JSON_TYPE_REQUIRED_FOR_EXTRACTION" class="variable"><a href="../generator.html#Generator.JSON_TYPE_REQUIRED_FOR_EXTRACTION">JSON_TYPE_REQUIRED_FOR_EXTRACTION</a></dd>
<dd id="ClickHouse.Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED" class="variable"><a href="../generator.html#Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED">JSON_PATH_BRACKETED_KEY_SUPPORTED</a></dd>
<dd id="ClickHouse.Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE" class="variable"><a href="../generator.html#Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE">JSON_PATH_SINGLE_QUOTE_ESCAPE</a></dd>
<dd id="ClickHouse.Generator.COPY_PARAMS_ARE_WRAPPED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_ARE_WRAPPED">COPY_PARAMS_ARE_WRAPPED</a></dd>
<dd id="ClickHouse.Generator.COPY_PARAMS_EQ_REQUIRED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_EQ_REQUIRED">COPY_PARAMS_EQ_REQUIRED</a></dd>
<dd id="ClickHouse.Generator.COPY_HAS_INTO_KEYWORD" class="variable"><a href="../generator.html#Generator.COPY_HAS_INTO_KEYWORD">COPY_HAS_INTO_KEYWORD</a></dd>
<dd id="ClickHouse.Generator.STAR_EXCEPT" class="variable"><a href="../generator.html#Generator.STAR_EXCEPT">STAR_EXCEPT</a></dd>
<dd id="ClickHouse.Generator.HEX_FUNC" class="variable"><a href="../generator.html#Generator.HEX_FUNC">HEX_FUNC</a></dd>
<dd id="ClickHouse.Generator.WITH_PROPERTIES_PREFIX" class="variable"><a href="../generator.html#Generator.WITH_PROPERTIES_PREFIX">WITH_PROPERTIES_PREFIX</a></dd>
<dd id="ClickHouse.Generator.QUOTE_JSON_PATH" class="variable"><a href="../generator.html#Generator.QUOTE_JSON_PATH">QUOTE_JSON_PATH</a></dd>
<dd id="ClickHouse.Generator.PAD_FILL_PATTERN_IS_REQUIRED" class="variable"><a href="../generator.html#Generator.PAD_FILL_PATTERN_IS_REQUIRED">PAD_FILL_PATTERN_IS_REQUIRED</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_EXPLODING_PROJECTIONS" class="variable"><a href="../generator.html#Generator.SUPPORTS_EXPLODING_PROJECTIONS">SUPPORTS_EXPLODING_PROJECTIONS</a></dd>
<dd id="ClickHouse.Generator.ARRAY_CONCAT_IS_VAR_LEN" class="variable"><a href="../generator.html#Generator.ARRAY_CONCAT_IS_VAR_LEN">ARRAY_CONCAT_IS_VAR_LEN</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_CONVERT_TIMEZONE" class="variable"><a href="../generator.html#Generator.SUPPORTS_CONVERT_TIMEZONE">SUPPORTS_CONVERT_TIMEZONE</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_MEDIAN" class="variable"><a href="../generator.html#Generator.SUPPORTS_MEDIAN">SUPPORTS_MEDIAN</a></dd>
<dd id="ClickHouse.Generator.SUPPORTS_UNIX_SECONDS" class="variable"><a href="../generator.html#Generator.SUPPORTS_UNIX_SECONDS">SUPPORTS_UNIX_SECONDS</a></dd>
<dd id="ClickHouse.Generator.PARSE_JSON_NAME" class="variable"><a href="../generator.html#Generator.PARSE_JSON_NAME">PARSE_JSON_NAME</a></dd>
<dd id="ClickHouse.Generator.ALTER_SET_TYPE" class="variable"><a href="../generator.html#Generator.ALTER_SET_TYPE">ALTER_SET_TYPE</a></dd>
<dd id="ClickHouse.Generator.ARRAY_SIZE_DIM_REQUIRED" class="variable"><a href="../generator.html#Generator.ARRAY_SIZE_DIM_REQUIRED">ARRAY_SIZE_DIM_REQUIRED</a></dd>
<dd id="ClickHouse.Generator.TIME_PART_SINGULARS" class="variable"><a href="../generator.html#Generator.TIME_PART_SINGULARS">TIME_PART_SINGULARS</a></dd>
<dd id="ClickHouse.Generator.TOKEN_MAPPING" class="variable"><a href="../generator.html#Generator.TOKEN_MAPPING">TOKEN_MAPPING</a></dd>
<dd id="ClickHouse.Generator.PARAMETER_TOKEN" class="variable"><a href="../generator.html#Generator.PARAMETER_TOKEN">PARAMETER_TOKEN</a></dd>
<dd id="ClickHouse.Generator.NAMED_PLACEHOLDER_TOKEN" class="variable"><a href="../generator.html#Generator.NAMED_PLACEHOLDER_TOKEN">NAMED_PLACEHOLDER_TOKEN</a></dd>
<dd id="ClickHouse.Generator.EXPRESSION_PRECEDES_PROPERTIES_CREATABLES" class="variable"><a href="../generator.html#Generator.EXPRESSION_PRECEDES_PROPERTIES_CREATABLES">EXPRESSION_PRECEDES_PROPERTIES_CREATABLES</a></dd>
<dd id="ClickHouse.Generator.RESERVED_KEYWORDS" class="variable"><a href="../generator.html#Generator.RESERVED_KEYWORDS">RESERVED_KEYWORDS</a></dd>
<dd id="ClickHouse.Generator.WITH_SEPARATED_COMMENTS" class="variable"><a href="../generator.html#Generator.WITH_SEPARATED_COMMENTS">WITH_SEPARATED_COMMENTS</a></dd>
<dd id="ClickHouse.Generator.EXCLUDE_COMMENTS" class="variable"><a href="../generator.html#Generator.EXCLUDE_COMMENTS">EXCLUDE_COMMENTS</a></dd>
<dd id="ClickHouse.Generator.UNWRAPPED_INTERVAL_VALUES" class="variable"><a href="../generator.html#Generator.UNWRAPPED_INTERVAL_VALUES">UNWRAPPED_INTERVAL_VALUES</a></dd>
<dd id="ClickHouse.Generator.PARAMETERIZABLE_TEXT_TYPES" class="variable"><a href="../generator.html#Generator.PARAMETERIZABLE_TEXT_TYPES">PARAMETERIZABLE_TEXT_TYPES</a></dd>
<dd id="ClickHouse.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES" class="variable"><a href="../generator.html#Generator.EXPRESSIONS_WITHOUT_NESTED_CTES">EXPRESSIONS_WITHOUT_NESTED_CTES</a></dd>
<dd id="ClickHouse.Generator.SENTINEL_LINE_BREAK" class="variable"><a href="../generator.html#Generator.SENTINEL_LINE_BREAK">SENTINEL_LINE_BREAK</a></dd>
<dd id="ClickHouse.Generator.pretty" class="variable"><a href="../generator.html#Generator.pretty">pretty</a></dd>
<dd id="ClickHouse.Generator.identify" class="variable"><a href="../generator.html#Generator.identify">identify</a></dd>
<dd id="ClickHouse.Generator.normalize" class="variable"><a href="../generator.html#Generator.normalize">normalize</a></dd>
<dd id="ClickHouse.Generator.pad" class="variable"><a href="../generator.html#Generator.pad">pad</a></dd>
<dd id="ClickHouse.Generator.unsupported_level" class="variable"><a href="../generator.html#Generator.unsupported_level">unsupported_level</a></dd>
<dd id="ClickHouse.Generator.max_unsupported" class="variable"><a href="../generator.html#Generator.max_unsupported">max_unsupported</a></dd>
<dd id="ClickHouse.Generator.leading_comma" class="variable"><a href="../generator.html#Generator.leading_comma">leading_comma</a></dd>
<dd id="ClickHouse.Generator.max_text_width" class="variable"><a href="../generator.html#Generator.max_text_width">max_text_width</a></dd>
<dd id="ClickHouse.Generator.comments" class="variable"><a href="../generator.html#Generator.comments">comments</a></dd>
<dd id="ClickHouse.Generator.dialect" class="variable"><a href="../generator.html#Generator.dialect">dialect</a></dd>
<dd id="ClickHouse.Generator.normalize_functions" class="variable"><a href="../generator.html#Generator.normalize_functions">normalize_functions</a></dd>
<dd id="ClickHouse.Generator.unsupported_messages" class="variable"><a href="../generator.html#Generator.unsupported_messages">unsupported_messages</a></dd>
<dd id="ClickHouse.Generator.generate" class="function"><a href="../generator.html#Generator.generate">generate</a></dd>
<dd id="ClickHouse.Generator.preprocess" class="function"><a href="../generator.html#Generator.preprocess">preprocess</a></dd>
<dd id="ClickHouse.Generator.unsupported" class="function"><a href="../generator.html#Generator.unsupported">unsupported</a></dd>
<dd id="ClickHouse.Generator.sep" class="function"><a href="../generator.html#Generator.sep">sep</a></dd>
<dd id="ClickHouse.Generator.seg" class="function"><a href="../generator.html#Generator.seg">seg</a></dd>
<dd id="ClickHouse.Generator.pad_comment" class="function"><a href="../generator.html#Generator.pad_comment">pad_comment</a></dd>
<dd id="ClickHouse.Generator.maybe_comment" class="function"><a href="../generator.html#Generator.maybe_comment">maybe_comment</a></dd>
<dd id="ClickHouse.Generator.wrap" class="function"><a href="../generator.html#Generator.wrap">wrap</a></dd>
<dd id="ClickHouse.Generator.no_identify" class="function"><a href="../generator.html#Generator.no_identify">no_identify</a></dd>
<dd id="ClickHouse.Generator.normalize_func" class="function"><a href="../generator.html#Generator.normalize_func">normalize_func</a></dd>
<dd id="ClickHouse.Generator.indent" class="function"><a href="../generator.html#Generator.indent">indent</a></dd>
<dd id="ClickHouse.Generator.sql" class="function"><a href="../generator.html#Generator.sql">sql</a></dd>
<dd id="ClickHouse.Generator.uncache_sql" class="function"><a href="../generator.html#Generator.uncache_sql">uncache_sql</a></dd>
<dd id="ClickHouse.Generator.cache_sql" class="function"><a href="../generator.html#Generator.cache_sql">cache_sql</a></dd>
<dd id="ClickHouse.Generator.characterset_sql" class="function"><a href="../generator.html#Generator.characterset_sql">characterset_sql</a></dd>
<dd id="ClickHouse.Generator.column_parts" class="function"><a href="../generator.html#Generator.column_parts">column_parts</a></dd>
<dd id="ClickHouse.Generator.column_sql" class="function"><a href="../generator.html#Generator.column_sql">column_sql</a></dd>
<dd id="ClickHouse.Generator.columnposition_sql" class="function"><a href="../generator.html#Generator.columnposition_sql">columnposition_sql</a></dd>
<dd id="ClickHouse.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd>
<dd id="ClickHouse.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.computedcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.computedcolumnconstraint_sql">computedcolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.generatedasrowcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasrowcolumnconstraint_sql">generatedasrowcolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.periodforsystemtimeconstraint_sql" class="function"><a href="../generator.html#Generator.periodforsystemtimeconstraint_sql">periodforsystemtimeconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.transformcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.transformcolumnconstraint_sql">transformcolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.uniquecolumnconstraint_sql" class="function"><a href="../generator.html#Generator.uniquecolumnconstraint_sql">uniquecolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.sequenceproperties_sql" class="function"><a href="../generator.html#Generator.sequenceproperties_sql">sequenceproperties_sql</a></dd>
<dd id="ClickHouse.Generator.clone_sql" class="function"><a href="../generator.html#Generator.clone_sql">clone_sql</a></dd>
<dd id="ClickHouse.Generator.describe_sql" class="function"><a href="../generator.html#Generator.describe_sql">describe_sql</a></dd>
<dd id="ClickHouse.Generator.heredoc_sql" class="function"><a href="../generator.html#Generator.heredoc_sql">heredoc_sql</a></dd>
<dd id="ClickHouse.Generator.prepend_ctes" class="function"><a href="../generator.html#Generator.prepend_ctes">prepend_ctes</a></dd>
<dd id="ClickHouse.Generator.with_sql" class="function"><a href="../generator.html#Generator.with_sql">with_sql</a></dd>
<dd id="ClickHouse.Generator.tablealias_sql" class="function"><a href="../generator.html#Generator.tablealias_sql">tablealias_sql</a></dd>
<dd id="ClickHouse.Generator.bitstring_sql" class="function"><a href="../generator.html#Generator.bitstring_sql">bitstring_sql</a></dd>
<dd id="ClickHouse.Generator.hexstring_sql" class="function"><a href="../generator.html#Generator.hexstring_sql">hexstring_sql</a></dd>
<dd id="ClickHouse.Generator.bytestring_sql" class="function"><a href="../generator.html#Generator.bytestring_sql">bytestring_sql</a></dd>
<dd id="ClickHouse.Generator.unicodestring_sql" class="function"><a href="../generator.html#Generator.unicodestring_sql">unicodestring_sql</a></dd>
<dd id="ClickHouse.Generator.rawstring_sql" class="function"><a href="../generator.html#Generator.rawstring_sql">rawstring_sql</a></dd>
<dd id="ClickHouse.Generator.datatypeparam_sql" class="function"><a href="../generator.html#Generator.datatypeparam_sql">datatypeparam_sql</a></dd>
<dd id="ClickHouse.Generator.directory_sql" class="function"><a href="../generator.html#Generator.directory_sql">directory_sql</a></dd>
<dd id="ClickHouse.Generator.delete_sql" class="function"><a href="../generator.html#Generator.delete_sql">delete_sql</a></dd>
<dd id="ClickHouse.Generator.drop_sql" class="function"><a href="../generator.html#Generator.drop_sql">drop_sql</a></dd>
<dd id="ClickHouse.Generator.set_operation" class="function"><a href="../generator.html#Generator.set_operation">set_operation</a></dd>
<dd id="ClickHouse.Generator.set_operations" class="function"><a href="../generator.html#Generator.set_operations">set_operations</a></dd>
<dd id="ClickHouse.Generator.fetch_sql" class="function"><a href="../generator.html#Generator.fetch_sql">fetch_sql</a></dd>
<dd id="ClickHouse.Generator.limitoptions_sql" class="function"><a href="../generator.html#Generator.limitoptions_sql">limitoptions_sql</a></dd>
<dd id="ClickHouse.Generator.filter_sql" class="function"><a href="../generator.html#Generator.filter_sql">filter_sql</a></dd>
<dd id="ClickHouse.Generator.hint_sql" class="function"><a href="../generator.html#Generator.hint_sql">hint_sql</a></dd>
<dd id="ClickHouse.Generator.indexparameters_sql" class="function"><a href="../generator.html#Generator.indexparameters_sql">indexparameters_sql</a></dd>
<dd id="ClickHouse.Generator.index_sql" class="function"><a href="../generator.html#Generator.index_sql">index_sql</a></dd>
<dd id="ClickHouse.Generator.identifier_sql" class="function"><a href="../generator.html#Generator.identifier_sql">identifier_sql</a></dd>
<dd id="ClickHouse.Generator.hex_sql" class="function"><a href="../generator.html#Generator.hex_sql">hex_sql</a></dd>
<dd id="ClickHouse.Generator.lowerhex_sql" class="function"><a href="../generator.html#Generator.lowerhex_sql">lowerhex_sql</a></dd>
<dd id="ClickHouse.Generator.inputoutputformat_sql" class="function"><a href="../generator.html#Generator.inputoutputformat_sql">inputoutputformat_sql</a></dd>
<dd id="ClickHouse.Generator.national_sql" class="function"><a href="../generator.html#Generator.national_sql">national_sql</a></dd>
<dd id="ClickHouse.Generator.properties_sql" class="function"><a href="../generator.html#Generator.properties_sql">properties_sql</a></dd>
<dd id="ClickHouse.Generator.root_properties" class="function"><a href="../generator.html#Generator.root_properties">root_properties</a></dd>
<dd id="ClickHouse.Generator.properties" class="function"><a href="../generator.html#Generator.properties">properties</a></dd>
<dd id="ClickHouse.Generator.with_properties" class="function"><a href="../generator.html#Generator.with_properties">with_properties</a></dd>
<dd id="ClickHouse.Generator.locate_properties" class="function"><a href="../generator.html#Generator.locate_properties">locate_properties</a></dd>
<dd id="ClickHouse.Generator.property_name" class="function"><a href="../generator.html#Generator.property_name">property_name</a></dd>
<dd id="ClickHouse.Generator.property_sql" class="function"><a href="../generator.html#Generator.property_sql">property_sql</a></dd>
<dd id="ClickHouse.Generator.fallbackproperty_sql" class="function"><a href="../generator.html#Generator.fallbackproperty_sql">fallbackproperty_sql</a></dd>
<dd id="ClickHouse.Generator.journalproperty_sql" class="function"><a href="../generator.html#Generator.journalproperty_sql">journalproperty_sql</a></dd>
<dd id="ClickHouse.Generator.freespaceproperty_sql" class="function"><a href="../generator.html#Generator.freespaceproperty_sql">freespaceproperty_sql</a></dd>
<dd id="ClickHouse.Generator.checksumproperty_sql" class="function"><a href="../generator.html#Generator.checksumproperty_sql">checksumproperty_sql</a></dd>
<dd id="ClickHouse.Generator.mergeblockratioproperty_sql" class="function"><a href="../generator.html#Generator.mergeblockratioproperty_sql">mergeblockratioproperty_sql</a></dd>
<dd id="ClickHouse.Generator.datablocksizeproperty_sql" class="function"><a href="../generator.html#Generator.datablocksizeproperty_sql">datablocksizeproperty_sql</a></dd>
<dd id="ClickHouse.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd>
<dd id="ClickHouse.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd>
<dd id="ClickHouse.Generator.partitionboundspec_sql" class="function"><a href="../generator.html#Generator.partitionboundspec_sql">partitionboundspec_sql</a></dd>
<dd id="ClickHouse.Generator.partitionedofproperty_sql" class="function"><a href="../generator.html#Generator.partitionedofproperty_sql">partitionedofproperty_sql</a></dd>
<dd id="ClickHouse.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd>
<dd id="ClickHouse.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd>
<dd id="ClickHouse.Generator.withsystemversioningproperty_sql" class="function"><a href="../generator.html#Generator.withsystemversioningproperty_sql">withsystemversioningproperty_sql</a></dd>
<dd id="ClickHouse.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd>
<dd id="ClickHouse.Generator.introducer_sql" class="function"><a href="../generator.html#Generator.introducer_sql">introducer_sql</a></dd>
<dd id="ClickHouse.Generator.kill_sql" class="function"><a href="../generator.html#Generator.kill_sql">kill_sql</a></dd>
<dd id="ClickHouse.Generator.pseudotype_sql" class="function"><a href="../generator.html#Generator.pseudotype_sql">pseudotype_sql</a></dd>
<dd id="ClickHouse.Generator.objectidentifier_sql" class="function"><a href="../generator.html#Generator.objectidentifier_sql">objectidentifier_sql</a></dd>
<dd id="ClickHouse.Generator.onconflict_sql" class="function"><a href="../generator.html#Generator.onconflict_sql">onconflict_sql</a></dd>
<dd id="ClickHouse.Generator.returning_sql" class="function"><a href="../generator.html#Generator.returning_sql">returning_sql</a></dd>
<dd id="ClickHouse.Generator.rowformatdelimitedproperty_sql" class="function"><a href="../generator.html#Generator.rowformatdelimitedproperty_sql">rowformatdelimitedproperty_sql</a></dd>
<dd id="ClickHouse.Generator.withtablehint_sql" class="function"><a href="../generator.html#Generator.withtablehint_sql">withtablehint_sql</a></dd>
<dd id="ClickHouse.Generator.indextablehint_sql" class="function"><a href="../generator.html#Generator.indextablehint_sql">indextablehint_sql</a></dd>
<dd id="ClickHouse.Generator.historicaldata_sql" class="function"><a href="../generator.html#Generator.historicaldata_sql">historicaldata_sql</a></dd>
<dd id="ClickHouse.Generator.table_parts" class="function"><a href="../generator.html#Generator.table_parts">table_parts</a></dd>
<dd id="ClickHouse.Generator.table_sql" class="function"><a href="../generator.html#Generator.table_sql">table_sql</a></dd>
<dd id="ClickHouse.Generator.tablefromrows_sql" class="function"><a href="../generator.html#Generator.tablefromrows_sql">tablefromrows_sql</a></dd>
<dd id="ClickHouse.Generator.tablesample_sql" class="function"><a href="../generator.html#Generator.tablesample_sql">tablesample_sql</a></dd>
<dd id="ClickHouse.Generator.pivot_sql" class="function"><a href="../generator.html#Generator.pivot_sql">pivot_sql</a></dd>
<dd id="ClickHouse.Generator.version_sql" class="function"><a href="../generator.html#Generator.version_sql">version_sql</a></dd>
<dd id="ClickHouse.Generator.tuple_sql" class="function"><a href="../generator.html#Generator.tuple_sql">tuple_sql</a></dd>
<dd id="ClickHouse.Generator.update_sql" class="function"><a href="../generator.html#Generator.update_sql">update_sql</a></dd>
<dd id="ClickHouse.Generator.var_sql" class="function"><a href="../generator.html#Generator.var_sql">var_sql</a></dd>
<dd id="ClickHouse.Generator.into_sql" class="function"><a href="../generator.html#Generator.into_sql">into_sql</a></dd>
<dd id="ClickHouse.Generator.from_sql" class="function"><a href="../generator.html#Generator.from_sql">from_sql</a></dd>
<dd id="ClickHouse.Generator.groupingsets_sql" class="function"><a href="../generator.html#Generator.groupingsets_sql">groupingsets_sql</a></dd>
<dd id="ClickHouse.Generator.rollup_sql" class="function"><a href="../generator.html#Generator.rollup_sql">rollup_sql</a></dd>
<dd id="ClickHouse.Generator.cube_sql" class="function"><a href="../generator.html#Generator.cube_sql">cube_sql</a></dd>
<dd id="ClickHouse.Generator.group_sql" class="function"><a href="../generator.html#Generator.group_sql">group_sql</a></dd>
<dd id="ClickHouse.Generator.having_sql" class="function"><a href="../generator.html#Generator.having_sql">having_sql</a></dd>
<dd id="ClickHouse.Generator.connect_sql" class="function"><a href="../generator.html#Generator.connect_sql">connect_sql</a></dd>
<dd id="ClickHouse.Generator.prior_sql" class="function"><a href="../generator.html#Generator.prior_sql">prior_sql</a></dd>
<dd id="ClickHouse.Generator.join_sql" class="function"><a href="../generator.html#Generator.join_sql">join_sql</a></dd>
<dd id="ClickHouse.Generator.lambda_sql" class="function"><a href="../generator.html#Generator.lambda_sql">lambda_sql</a></dd>
<dd id="ClickHouse.Generator.lateral_op" class="function"><a href="../generator.html#Generator.lateral_op">lateral_op</a></dd>
<dd id="ClickHouse.Generator.lateral_sql" class="function"><a href="../generator.html#Generator.lateral_sql">lateral_sql</a></dd>
<dd id="ClickHouse.Generator.limit_sql" class="function"><a href="../generator.html#Generator.limit_sql">limit_sql</a></dd>
<dd id="ClickHouse.Generator.offset_sql" class="function"><a href="../generator.html#Generator.offset_sql">offset_sql</a></dd>
<dd id="ClickHouse.Generator.setitem_sql" class="function"><a href="../generator.html#Generator.setitem_sql">setitem_sql</a></dd>
<dd id="ClickHouse.Generator.set_sql" class="function"><a href="../generator.html#Generator.set_sql">set_sql</a></dd>
<dd id="ClickHouse.Generator.pragma_sql" class="function"><a href="../generator.html#Generator.pragma_sql">pragma_sql</a></dd>
<dd id="ClickHouse.Generator.lock_sql" class="function"><a href="../generator.html#Generator.lock_sql">lock_sql</a></dd>
<dd id="ClickHouse.Generator.literal_sql" class="function"><a href="../generator.html#Generator.literal_sql">literal_sql</a></dd>
<dd id="ClickHouse.Generator.escape_str" class="function"><a href="../generator.html#Generator.escape_str">escape_str</a></dd>
<dd id="ClickHouse.Generator.loaddata_sql" class="function"><a href="../generator.html#Generator.loaddata_sql">loaddata_sql</a></dd>
<dd id="ClickHouse.Generator.null_sql" class="function"><a href="../generator.html#Generator.null_sql">null_sql</a></dd>
<dd id="ClickHouse.Generator.boolean_sql" class="function"><a href="../generator.html#Generator.boolean_sql">boolean_sql</a></dd>
<dd id="ClickHouse.Generator.order_sql" class="function"><a href="../generator.html#Generator.order_sql">order_sql</a></dd>
<dd id="ClickHouse.Generator.withfill_sql" class="function"><a href="../generator.html#Generator.withfill_sql">withfill_sql</a></dd>
<dd id="ClickHouse.Generator.cluster_sql" class="function"><a href="../generator.html#Generator.cluster_sql">cluster_sql</a></dd>
<dd id="ClickHouse.Generator.distribute_sql" class="function"><a href="../generator.html#Generator.distribute_sql">distribute_sql</a></dd>
<dd id="ClickHouse.Generator.sort_sql" class="function"><a href="../generator.html#Generator.sort_sql">sort_sql</a></dd>
<dd id="ClickHouse.Generator.ordered_sql" class="function"><a href="../generator.html#Generator.ordered_sql">ordered_sql</a></dd>
<dd id="ClickHouse.Generator.matchrecognizemeasure_sql" class="function"><a href="../generator.html#Generator.matchrecognizemeasure_sql">matchrecognizemeasure_sql</a></dd>
<dd id="ClickHouse.Generator.matchrecognize_sql" class="function"><a href="../generator.html#Generator.matchrecognize_sql">matchrecognize_sql</a></dd>
<dd id="ClickHouse.Generator.query_modifiers" class="function"><a href="../generator.html#Generator.query_modifiers">query_modifiers</a></dd>
<dd id="ClickHouse.Generator.options_modifier" class="function"><a href="../generator.html#Generator.options_modifier">options_modifier</a></dd>
<dd id="ClickHouse.Generator.queryoption_sql" class="function"><a href="../generator.html#Generator.queryoption_sql">queryoption_sql</a></dd>
<dd id="ClickHouse.Generator.offset_limit_modifiers" class="function"><a href="../generator.html#Generator.offset_limit_modifiers">offset_limit_modifiers</a></dd>
<dd id="ClickHouse.Generator.select_sql" class="function"><a href="../generator.html#Generator.select_sql">select_sql</a></dd>
<dd id="ClickHouse.Generator.schema_sql" class="function"><a href="../generator.html#Generator.schema_sql">schema_sql</a></dd>
<dd id="ClickHouse.Generator.schema_columns_sql" class="function"><a href="../generator.html#Generator.schema_columns_sql">schema_columns_sql</a></dd>
<dd id="ClickHouse.Generator.star_sql" class="function"><a href="../generator.html#Generator.star_sql">star_sql</a></dd>
<dd id="ClickHouse.Generator.parameter_sql" class="function"><a href="../generator.html#Generator.parameter_sql">parameter_sql</a></dd>
<dd id="ClickHouse.Generator.sessionparameter_sql" class="function"><a href="../generator.html#Generator.sessionparameter_sql">sessionparameter_sql</a></dd>
<dd id="ClickHouse.Generator.subquery_sql" class="function"><a href="../generator.html#Generator.subquery_sql">subquery_sql</a></dd>
<dd id="ClickHouse.Generator.qualify_sql" class="function"><a href="../generator.html#Generator.qualify_sql">qualify_sql</a></dd>
<dd id="ClickHouse.Generator.unnest_sql" class="function"><a href="../generator.html#Generator.unnest_sql">unnest_sql</a></dd>
<dd id="ClickHouse.Generator.where_sql" class="function"><a href="../generator.html#Generator.where_sql">where_sql</a></dd>
<dd id="ClickHouse.Generator.window_sql" class="function"><a href="../generator.html#Generator.window_sql">window_sql</a></dd>
<dd id="ClickHouse.Generator.partition_by_sql" class="function"><a href="../generator.html#Generator.partition_by_sql">partition_by_sql</a></dd>
<dd id="ClickHouse.Generator.windowspec_sql" class="function"><a href="../generator.html#Generator.windowspec_sql">windowspec_sql</a></dd>
<dd id="ClickHouse.Generator.withingroup_sql" class="function"><a href="../generator.html#Generator.withingroup_sql">withingroup_sql</a></dd>
<dd id="ClickHouse.Generator.between_sql" class="function"><a href="../generator.html#Generator.between_sql">between_sql</a></dd>
<dd id="ClickHouse.Generator.bracket_offset_expressions" class="function"><a href="../generator.html#Generator.bracket_offset_expressions">bracket_offset_expressions</a></dd>
<dd id="ClickHouse.Generator.bracket_sql" class="function"><a href="../generator.html#Generator.bracket_sql">bracket_sql</a></dd>
<dd id="ClickHouse.Generator.all_sql" class="function"><a href="../generator.html#Generator.all_sql">all_sql</a></dd>
<dd id="ClickHouse.Generator.any_sql" class="function"><a href="../generator.html#Generator.any_sql">any_sql</a></dd>
<dd id="ClickHouse.Generator.exists_sql" class="function"><a href="../generator.html#Generator.exists_sql">exists_sql</a></dd>
<dd id="ClickHouse.Generator.case_sql" class="function"><a href="../generator.html#Generator.case_sql">case_sql</a></dd>
<dd id="ClickHouse.Generator.constraint_sql" class="function"><a href="../generator.html#Generator.constraint_sql">constraint_sql</a></dd>
<dd id="ClickHouse.Generator.nextvaluefor_sql" class="function"><a href="../generator.html#Generator.nextvaluefor_sql">nextvaluefor_sql</a></dd>
<dd id="ClickHouse.Generator.extract_sql" class="function"><a href="../generator.html#Generator.extract_sql">extract_sql</a></dd>
<dd id="ClickHouse.Generator.trim_sql" class="function"><a href="../generator.html#Generator.trim_sql">trim_sql</a></dd>
<dd id="ClickHouse.Generator.convert_concat_args" class="function"><a href="../generator.html#Generator.convert_concat_args">convert_concat_args</a></dd>
<dd id="ClickHouse.Generator.concat_sql" class="function"><a href="../generator.html#Generator.concat_sql">concat_sql</a></dd>
<dd id="ClickHouse.Generator.concatws_sql" class="function"><a href="../generator.html#Generator.concatws_sql">concatws_sql</a></dd>
<dd id="ClickHouse.Generator.check_sql" class="function"><a href="../generator.html#Generator.check_sql">check_sql</a></dd>
<dd id="ClickHouse.Generator.foreignkey_sql" class="function"><a href="../generator.html#Generator.foreignkey_sql">foreignkey_sql</a></dd>
<dd id="ClickHouse.Generator.primarykey_sql" class="function"><a href="../generator.html#Generator.primarykey_sql">primarykey_sql</a></dd>
<dd id="ClickHouse.Generator.if_sql" class="function"><a href="../generator.html#Generator.if_sql">if_sql</a></dd>
<dd id="ClickHouse.Generator.matchagainst_sql" class="function"><a href="../generator.html#Generator.matchagainst_sql">matchagainst_sql</a></dd>
<dd id="ClickHouse.Generator.jsonkeyvalue_sql" class="function"><a href="../generator.html#Generator.jsonkeyvalue_sql">jsonkeyvalue_sql</a></dd>
<dd id="ClickHouse.Generator.jsonpath_sql" class="function"><a href="../generator.html#Generator.jsonpath_sql">jsonpath_sql</a></dd>
<dd id="ClickHouse.Generator.json_path_part" class="function"><a href="../generator.html#Generator.json_path_part">json_path_part</a></dd>
<dd id="ClickHouse.Generator.formatjson_sql" class="function"><a href="../generator.html#Generator.formatjson_sql">formatjson_sql</a></dd>
<dd id="ClickHouse.Generator.jsonobject_sql" class="function"><a href="../generator.html#Generator.jsonobject_sql">jsonobject_sql</a></dd>
<dd id="ClickHouse.Generator.jsonobjectagg_sql" class="function"><a href="../generator.html#Generator.jsonobjectagg_sql">jsonobjectagg_sql</a></dd>
<dd id="ClickHouse.Generator.jsonarray_sql" class="function"><a href="../generator.html#Generator.jsonarray_sql">jsonarray_sql</a></dd>
<dd id="ClickHouse.Generator.jsonarrayagg_sql" class="function"><a href="../generator.html#Generator.jsonarrayagg_sql">jsonarrayagg_sql</a></dd>
<dd id="ClickHouse.Generator.jsoncolumndef_sql" class="function"><a href="../generator.html#Generator.jsoncolumndef_sql">jsoncolumndef_sql</a></dd>
<dd id="ClickHouse.Generator.jsonschema_sql" class="function"><a href="../generator.html#Generator.jsonschema_sql">jsonschema_sql</a></dd>
<dd id="ClickHouse.Generator.jsontable_sql" class="function"><a href="../generator.html#Generator.jsontable_sql">jsontable_sql</a></dd>
<dd id="ClickHouse.Generator.openjsoncolumndef_sql" class="function"><a href="../generator.html#Generator.openjsoncolumndef_sql">openjsoncolumndef_sql</a></dd>
<dd id="ClickHouse.Generator.openjson_sql" class="function"><a href="../generator.html#Generator.openjson_sql">openjson_sql</a></dd>
<dd id="ClickHouse.Generator.in_unnest_op" class="function"><a href="../generator.html#Generator.in_unnest_op">in_unnest_op</a></dd>
<dd id="ClickHouse.Generator.interval_sql" class="function"><a href="../generator.html#Generator.interval_sql">interval_sql</a></dd>
<dd id="ClickHouse.Generator.return_sql" class="function"><a href="../generator.html#Generator.return_sql">return_sql</a></dd>
<dd id="ClickHouse.Generator.reference_sql" class="function"><a href="../generator.html#Generator.reference_sql">reference_sql</a></dd>
<dd id="ClickHouse.Generator.anonymous_sql" class="function"><a href="../generator.html#Generator.anonymous_sql">anonymous_sql</a></dd>
<dd id="ClickHouse.Generator.paren_sql" class="function"><a href="../generator.html#Generator.paren_sql">paren_sql</a></dd>
<dd id="ClickHouse.Generator.neg_sql" class="function"><a href="../generator.html#Generator.neg_sql">neg_sql</a></dd>
<dd id="ClickHouse.Generator.alias_sql" class="function"><a href="../generator.html#Generator.alias_sql">alias_sql</a></dd>
<dd id="ClickHouse.Generator.pivotalias_sql" class="function"><a href="../generator.html#Generator.pivotalias_sql">pivotalias_sql</a></dd>
<dd id="ClickHouse.Generator.aliases_sql" class="function"><a href="../generator.html#Generator.aliases_sql">aliases_sql</a></dd>
<dd id="ClickHouse.Generator.atindex_sql" class="function"><a href="../generator.html#Generator.atindex_sql">atindex_sql</a></dd>
<dd id="ClickHouse.Generator.attimezone_sql" class="function"><a href="../generator.html#Generator.attimezone_sql">attimezone_sql</a></dd>
<dd id="ClickHouse.Generator.fromtimezone_sql" class="function"><a href="../generator.html#Generator.fromtimezone_sql">fromtimezone_sql</a></dd>
<dd id="ClickHouse.Generator.add_sql" class="function"><a href="../generator.html#Generator.add_sql">add_sql</a></dd>
<dd id="ClickHouse.Generator.and_sql" class="function"><a href="../generator.html#Generator.and_sql">and_sql</a></dd>
<dd id="ClickHouse.Generator.or_sql" class="function"><a href="../generator.html#Generator.or_sql">or_sql</a></dd>
<dd id="ClickHouse.Generator.xor_sql" class="function"><a href="../generator.html#Generator.xor_sql">xor_sql</a></dd>
<dd id="ClickHouse.Generator.connector_sql" class="function"><a href="../generator.html#Generator.connector_sql">connector_sql</a></dd>
<dd id="ClickHouse.Generator.bitwiseand_sql" class="function"><a href="../generator.html#Generator.bitwiseand_sql">bitwiseand_sql</a></dd>
<dd id="ClickHouse.Generator.bitwiseleftshift_sql" class="function"><a href="../generator.html#Generator.bitwiseleftshift_sql">bitwiseleftshift_sql</a></dd>
<dd id="ClickHouse.Generator.bitwisenot_sql" class="function"><a href="../generator.html#Generator.bitwisenot_sql">bitwisenot_sql</a></dd>
<dd id="ClickHouse.Generator.bitwiseor_sql" class="function"><a href="../generator.html#Generator.bitwiseor_sql">bitwiseor_sql</a></dd>
<dd id="ClickHouse.Generator.bitwiserightshift_sql" class="function"><a href="../generator.html#Generator.bitwiserightshift_sql">bitwiserightshift_sql</a></dd>
<dd id="ClickHouse.Generator.bitwisexor_sql" class="function"><a href="../generator.html#Generator.bitwisexor_sql">bitwisexor_sql</a></dd>
<dd id="ClickHouse.Generator.currentdate_sql" class="function"><a href="../generator.html#Generator.currentdate_sql">currentdate_sql</a></dd>
<dd id="ClickHouse.Generator.collate_sql" class="function"><a href="../generator.html#Generator.collate_sql">collate_sql</a></dd>
<dd id="ClickHouse.Generator.command_sql" class="function"><a href="../generator.html#Generator.command_sql">command_sql</a></dd>
<dd id="ClickHouse.Generator.comment_sql" class="function"><a href="../generator.html#Generator.comment_sql">comment_sql</a></dd>
<dd id="ClickHouse.Generator.mergetreettlaction_sql" class="function"><a href="../generator.html#Generator.mergetreettlaction_sql">mergetreettlaction_sql</a></dd>
<dd id="ClickHouse.Generator.mergetreettl_sql" class="function"><a href="../generator.html#Generator.mergetreettl_sql">mergetreettl_sql</a></dd>
<dd id="ClickHouse.Generator.transaction_sql" class="function"><a href="../generator.html#Generator.transaction_sql">transaction_sql</a></dd>
<dd id="ClickHouse.Generator.commit_sql" class="function"><a href="../generator.html#Generator.commit_sql">commit_sql</a></dd>
<dd id="ClickHouse.Generator.rollback_sql" class="function"><a href="../generator.html#Generator.rollback_sql">rollback_sql</a></dd>
<dd id="ClickHouse.Generator.altercolumn_sql" class="function"><a href="../generator.html#Generator.altercolumn_sql">altercolumn_sql</a></dd>
<dd id="ClickHouse.Generator.alterindex_sql" class="function"><a href="../generator.html#Generator.alterindex_sql">alterindex_sql</a></dd>
<dd id="ClickHouse.Generator.alterdiststyle_sql" class="function"><a href="../generator.html#Generator.alterdiststyle_sql">alterdiststyle_sql</a></dd>
<dd id="ClickHouse.Generator.altersortkey_sql" class="function"><a href="../generator.html#Generator.altersortkey_sql">altersortkey_sql</a></dd>
<dd id="ClickHouse.Generator.alterrename_sql" class="function"><a href="../generator.html#Generator.alterrename_sql">alterrename_sql</a></dd>
<dd id="ClickHouse.Generator.renamecolumn_sql" class="function"><a href="../generator.html#Generator.renamecolumn_sql">renamecolumn_sql</a></dd>
<dd id="ClickHouse.Generator.alterset_sql" class="function"><a href="../generator.html#Generator.alterset_sql">alterset_sql</a></dd>
<dd id="ClickHouse.Generator.alter_sql" class="function"><a href="../generator.html#Generator.alter_sql">alter_sql</a></dd>
<dd id="ClickHouse.Generator.add_column_sql" class="function"><a href="../generator.html#Generator.add_column_sql">add_column_sql</a></dd>
<dd id="ClickHouse.Generator.droppartition_sql" class="function"><a href="../generator.html#Generator.droppartition_sql">droppartition_sql</a></dd>
<dd id="ClickHouse.Generator.addconstraint_sql" class="function"><a href="../generator.html#Generator.addconstraint_sql">addconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.distinct_sql" class="function"><a href="../generator.html#Generator.distinct_sql">distinct_sql</a></dd>
<dd id="ClickHouse.Generator.ignorenulls_sql" class="function"><a href="../generator.html#Generator.ignorenulls_sql">ignorenulls_sql</a></dd>
<dd id="ClickHouse.Generator.respectnulls_sql" class="function"><a href="../generator.html#Generator.respectnulls_sql">respectnulls_sql</a></dd>
<dd id="ClickHouse.Generator.havingmax_sql" class="function"><a href="../generator.html#Generator.havingmax_sql">havingmax_sql</a></dd>
<dd id="ClickHouse.Generator.intdiv_sql" class="function"><a href="../generator.html#Generator.intdiv_sql">intdiv_sql</a></dd>
<dd id="ClickHouse.Generator.dpipe_sql" class="function"><a href="../generator.html#Generator.dpipe_sql">dpipe_sql</a></dd>
<dd id="ClickHouse.Generator.div_sql" class="function"><a href="../generator.html#Generator.div_sql">div_sql</a></dd>
<dd id="ClickHouse.Generator.safedivide_sql" class="function"><a href="../generator.html#Generator.safedivide_sql">safedivide_sql</a></dd>
<dd id="ClickHouse.Generator.overlaps_sql" class="function"><a href="../generator.html#Generator.overlaps_sql">overlaps_sql</a></dd>
<dd id="ClickHouse.Generator.distance_sql" class="function"><a href="../generator.html#Generator.distance_sql">distance_sql</a></dd>
<dd id="ClickHouse.Generator.dot_sql" class="function"><a href="../generator.html#Generator.dot_sql">dot_sql</a></dd>
<dd id="ClickHouse.Generator.propertyeq_sql" class="function"><a href="../generator.html#Generator.propertyeq_sql">propertyeq_sql</a></dd>
<dd id="ClickHouse.Generator.escape_sql" class="function"><a href="../generator.html#Generator.escape_sql">escape_sql</a></dd>
<dd id="ClickHouse.Generator.glob_sql" class="function"><a href="../generator.html#Generator.glob_sql">glob_sql</a></dd>
<dd id="ClickHouse.Generator.gt_sql" class="function"><a href="../generator.html#Generator.gt_sql">gt_sql</a></dd>
<dd id="ClickHouse.Generator.gte_sql" class="function"><a href="../generator.html#Generator.gte_sql">gte_sql</a></dd>
<dd id="ClickHouse.Generator.ilike_sql" class="function"><a href="../generator.html#Generator.ilike_sql">ilike_sql</a></dd>
<dd id="ClickHouse.Generator.ilikeany_sql" class="function"><a href="../generator.html#Generator.ilikeany_sql">ilikeany_sql</a></dd>
<dd id="ClickHouse.Generator.like_sql" class="function"><a href="../generator.html#Generator.like_sql">like_sql</a></dd>
<dd id="ClickHouse.Generator.likeany_sql" class="function"><a href="../generator.html#Generator.likeany_sql">likeany_sql</a></dd>
<dd id="ClickHouse.Generator.similarto_sql" class="function"><a href="../generator.html#Generator.similarto_sql">similarto_sql</a></dd>
<dd id="ClickHouse.Generator.lt_sql" class="function"><a href="../generator.html#Generator.lt_sql">lt_sql</a></dd>
<dd id="ClickHouse.Generator.lte_sql" class="function"><a href="../generator.html#Generator.lte_sql">lte_sql</a></dd>
<dd id="ClickHouse.Generator.mod_sql" class="function"><a href="../generator.html#Generator.mod_sql">mod_sql</a></dd>
<dd id="ClickHouse.Generator.mul_sql" class="function"><a href="../generator.html#Generator.mul_sql">mul_sql</a></dd>
<dd id="ClickHouse.Generator.nullsafeeq_sql" class="function"><a href="../generator.html#Generator.nullsafeeq_sql">nullsafeeq_sql</a></dd>
<dd id="ClickHouse.Generator.nullsafeneq_sql" class="function"><a href="../generator.html#Generator.nullsafeneq_sql">nullsafeneq_sql</a></dd>
<dd id="ClickHouse.Generator.slice_sql" class="function"><a href="../generator.html#Generator.slice_sql">slice_sql</a></dd>
<dd id="ClickHouse.Generator.sub_sql" class="function"><a href="../generator.html#Generator.sub_sql">sub_sql</a></dd>
<dd id="ClickHouse.Generator.jsoncast_sql" class="function"><a href="../generator.html#Generator.jsoncast_sql">jsoncast_sql</a></dd>
<dd id="ClickHouse.Generator.try_sql" class="function"><a href="../generator.html#Generator.try_sql">try_sql</a></dd>
<dd id="ClickHouse.Generator.log_sql" class="function"><a href="../generator.html#Generator.log_sql">log_sql</a></dd>
<dd id="ClickHouse.Generator.use_sql" class="function"><a href="../generator.html#Generator.use_sql">use_sql</a></dd>
<dd id="ClickHouse.Generator.binary" class="function"><a href="../generator.html#Generator.binary">binary</a></dd>
<dd id="ClickHouse.Generator.ceil_floor" class="function"><a href="../generator.html#Generator.ceil_floor">ceil_floor</a></dd>
<dd id="ClickHouse.Generator.function_fallback_sql" class="function"><a href="../generator.html#Generator.function_fallback_sql">function_fallback_sql</a></dd>
<dd id="ClickHouse.Generator.func" class="function"><a href="../generator.html#Generator.func">func</a></dd>
<dd id="ClickHouse.Generator.format_args" class="function"><a href="../generator.html#Generator.format_args">format_args</a></dd>
<dd id="ClickHouse.Generator.too_wide" class="function"><a href="../generator.html#Generator.too_wide">too_wide</a></dd>
<dd id="ClickHouse.Generator.format_time" class="function"><a href="../generator.html#Generator.format_time">format_time</a></dd>
<dd id="ClickHouse.Generator.expressions" class="function"><a href="../generator.html#Generator.expressions">expressions</a></dd>
<dd id="ClickHouse.Generator.op_expressions" class="function"><a href="../generator.html#Generator.op_expressions">op_expressions</a></dd>
<dd id="ClickHouse.Generator.naked_property" class="function"><a href="../generator.html#Generator.naked_property">naked_property</a></dd>
<dd id="ClickHouse.Generator.tag_sql" class="function"><a href="../generator.html#Generator.tag_sql">tag_sql</a></dd>
<dd id="ClickHouse.Generator.token_sql" class="function"><a href="../generator.html#Generator.token_sql">token_sql</a></dd>
<dd id="ClickHouse.Generator.userdefinedfunction_sql" class="function"><a href="../generator.html#Generator.userdefinedfunction_sql">userdefinedfunction_sql</a></dd>
<dd id="ClickHouse.Generator.joinhint_sql" class="function"><a href="../generator.html#Generator.joinhint_sql">joinhint_sql</a></dd>
<dd id="ClickHouse.Generator.kwarg_sql" class="function"><a href="../generator.html#Generator.kwarg_sql">kwarg_sql</a></dd>
<dd id="ClickHouse.Generator.when_sql" class="function"><a href="../generator.html#Generator.when_sql">when_sql</a></dd>
<dd id="ClickHouse.Generator.whens_sql" class="function"><a href="../generator.html#Generator.whens_sql">whens_sql</a></dd>
<dd id="ClickHouse.Generator.merge_sql" class="function"><a href="../generator.html#Generator.merge_sql">merge_sql</a></dd>
<dd id="ClickHouse.Generator.tochar_sql" class="function"><a href="../generator.html#Generator.tochar_sql">tochar_sql</a></dd>
<dd id="ClickHouse.Generator.tonumber_sql" class="function"><a href="../generator.html#Generator.tonumber_sql">tonumber_sql</a></dd>
<dd id="ClickHouse.Generator.dictproperty_sql" class="function"><a href="../generator.html#Generator.dictproperty_sql">dictproperty_sql</a></dd>
<dd id="ClickHouse.Generator.dictrange_sql" class="function"><a href="../generator.html#Generator.dictrange_sql">dictrange_sql</a></dd>
<dd id="ClickHouse.Generator.dictsubproperty_sql" class="function"><a href="../generator.html#Generator.dictsubproperty_sql">dictsubproperty_sql</a></dd>
<dd id="ClickHouse.Generator.duplicatekeyproperty_sql" class="function"><a href="../generator.html#Generator.duplicatekeyproperty_sql">duplicatekeyproperty_sql</a></dd>
<dd id="ClickHouse.Generator.uniquekeyproperty_sql" class="function"><a href="../generator.html#Generator.uniquekeyproperty_sql">uniquekeyproperty_sql</a></dd>
<dd id="ClickHouse.Generator.distributedbyproperty_sql" class="function"><a href="../generator.html#Generator.distributedbyproperty_sql">distributedbyproperty_sql</a></dd>
<dd id="ClickHouse.Generator.clusteredbyproperty_sql" class="function"><a href="../generator.html#Generator.clusteredbyproperty_sql">clusteredbyproperty_sql</a></dd>
<dd id="ClickHouse.Generator.anyvalue_sql" class="function"><a href="../generator.html#Generator.anyvalue_sql">anyvalue_sql</a></dd>
<dd id="ClickHouse.Generator.querytransform_sql" class="function"><a href="../generator.html#Generator.querytransform_sql">querytransform_sql</a></dd>
<dd id="ClickHouse.Generator.indexconstraintoption_sql" class="function"><a href="../generator.html#Generator.indexconstraintoption_sql">indexconstraintoption_sql</a></dd>
<dd id="ClickHouse.Generator.checkcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.checkcolumnconstraint_sql">checkcolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.nvl2_sql" class="function"><a href="../generator.html#Generator.nvl2_sql">nvl2_sql</a></dd>
<dd id="ClickHouse.Generator.comprehension_sql" class="function"><a href="../generator.html#Generator.comprehension_sql">comprehension_sql</a></dd>
<dd id="ClickHouse.Generator.columnprefix_sql" class="function"><a href="../generator.html#Generator.columnprefix_sql">columnprefix_sql</a></dd>
<dd id="ClickHouse.Generator.opclass_sql" class="function"><a href="../generator.html#Generator.opclass_sql">opclass_sql</a></dd>
<dd id="ClickHouse.Generator.predict_sql" class="function"><a href="../generator.html#Generator.predict_sql">predict_sql</a></dd>
<dd id="ClickHouse.Generator.forin_sql" class="function"><a href="../generator.html#Generator.forin_sql">forin_sql</a></dd>
<dd id="ClickHouse.Generator.refresh_sql" class="function"><a href="../generator.html#Generator.refresh_sql">refresh_sql</a></dd>
<dd id="ClickHouse.Generator.toarray_sql" class="function"><a href="../generator.html#Generator.toarray_sql">toarray_sql</a></dd>
<dd id="ClickHouse.Generator.tsordstotime_sql" class="function"><a href="../generator.html#Generator.tsordstotime_sql">tsordstotime_sql</a></dd>
<dd id="ClickHouse.Generator.tsordstotimestamp_sql" class="function"><a href="../generator.html#Generator.tsordstotimestamp_sql">tsordstotimestamp_sql</a></dd>
<dd id="ClickHouse.Generator.tsordstodatetime_sql" class="function"><a href="../generator.html#Generator.tsordstodatetime_sql">tsordstodatetime_sql</a></dd>
<dd id="ClickHouse.Generator.tsordstodate_sql" class="function"><a href="../generator.html#Generator.tsordstodate_sql">tsordstodate_sql</a></dd>
<dd id="ClickHouse.Generator.unixdate_sql" class="function"><a href="../generator.html#Generator.unixdate_sql">unixdate_sql</a></dd>
<dd id="ClickHouse.Generator.lastday_sql" class="function"><a href="../generator.html#Generator.lastday_sql">lastday_sql</a></dd>
<dd id="ClickHouse.Generator.dateadd_sql" class="function"><a href="../generator.html#Generator.dateadd_sql">dateadd_sql</a></dd>
<dd id="ClickHouse.Generator.arrayany_sql" class="function"><a href="../generator.html#Generator.arrayany_sql">arrayany_sql</a></dd>
<dd id="ClickHouse.Generator.struct_sql" class="function"><a href="../generator.html#Generator.struct_sql">struct_sql</a></dd>
<dd id="ClickHouse.Generator.partitionrange_sql" class="function"><a href="../generator.html#Generator.partitionrange_sql">partitionrange_sql</a></dd>
<dd id="ClickHouse.Generator.truncatetable_sql" class="function"><a href="../generator.html#Generator.truncatetable_sql">truncatetable_sql</a></dd>
<dd id="ClickHouse.Generator.convert_sql" class="function"><a href="../generator.html#Generator.convert_sql">convert_sql</a></dd>
<dd id="ClickHouse.Generator.copyparameter_sql" class="function"><a href="../generator.html#Generator.copyparameter_sql">copyparameter_sql</a></dd>
<dd id="ClickHouse.Generator.credentials_sql" class="function"><a href="../generator.html#Generator.credentials_sql">credentials_sql</a></dd>
<dd id="ClickHouse.Generator.copy_sql" class="function"><a href="../generator.html#Generator.copy_sql">copy_sql</a></dd>
<dd id="ClickHouse.Generator.semicolon_sql" class="function"><a href="../generator.html#Generator.semicolon_sql">semicolon_sql</a></dd>
<dd id="ClickHouse.Generator.datadeletionproperty_sql" class="function"><a href="../generator.html#Generator.datadeletionproperty_sql">datadeletionproperty_sql</a></dd>
<dd id="ClickHouse.Generator.maskingpolicycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.maskingpolicycolumnconstraint_sql">maskingpolicycolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.gapfill_sql" class="function"><a href="../generator.html#Generator.gapfill_sql">gapfill_sql</a></dd>
<dd id="ClickHouse.Generator.scope_resolution" class="function"><a href="../generator.html#Generator.scope_resolution">scope_resolution</a></dd>
<dd id="ClickHouse.Generator.scoperesolution_sql" class="function"><a href="../generator.html#Generator.scoperesolution_sql">scoperesolution_sql</a></dd>
<dd id="ClickHouse.Generator.parsejson_sql" class="function"><a href="../generator.html#Generator.parsejson_sql">parsejson_sql</a></dd>
<dd id="ClickHouse.Generator.rand_sql" class="function"><a href="../generator.html#Generator.rand_sql">rand_sql</a></dd>
<dd id="ClickHouse.Generator.changes_sql" class="function"><a href="../generator.html#Generator.changes_sql">changes_sql</a></dd>
<dd id="ClickHouse.Generator.pad_sql" class="function"><a href="../generator.html#Generator.pad_sql">pad_sql</a></dd>
<dd id="ClickHouse.Generator.summarize_sql" class="function"><a href="../generator.html#Generator.summarize_sql">summarize_sql</a></dd>
<dd id="ClickHouse.Generator.explodinggenerateseries_sql" class="function"><a href="../generator.html#Generator.explodinggenerateseries_sql">explodinggenerateseries_sql</a></dd>
<dd id="ClickHouse.Generator.arrayconcat_sql" class="function"><a href="../generator.html#Generator.arrayconcat_sql">arrayconcat_sql</a></dd>
<dd id="ClickHouse.Generator.converttimezone_sql" class="function"><a href="../generator.html#Generator.converttimezone_sql">converttimezone_sql</a></dd>
<dd id="ClickHouse.Generator.json_sql" class="function"><a href="../generator.html#Generator.json_sql">json_sql</a></dd>
<dd id="ClickHouse.Generator.jsonvalue_sql" class="function"><a href="../generator.html#Generator.jsonvalue_sql">jsonvalue_sql</a></dd>
<dd id="ClickHouse.Generator.conditionalinsert_sql" class="function"><a href="../generator.html#Generator.conditionalinsert_sql">conditionalinsert_sql</a></dd>
<dd id="ClickHouse.Generator.multitableinserts_sql" class="function"><a href="../generator.html#Generator.multitableinserts_sql">multitableinserts_sql</a></dd>
<dd id="ClickHouse.Generator.oncondition_sql" class="function"><a href="../generator.html#Generator.oncondition_sql">oncondition_sql</a></dd>
<dd id="ClickHouse.Generator.jsonextractquote_sql" class="function"><a href="../generator.html#Generator.jsonextractquote_sql">jsonextractquote_sql</a></dd>
<dd id="ClickHouse.Generator.jsonexists_sql" class="function"><a href="../generator.html#Generator.jsonexists_sql">jsonexists_sql</a></dd>
<dd id="ClickHouse.Generator.arrayagg_sql" class="function"><a href="../generator.html#Generator.arrayagg_sql">arrayagg_sql</a></dd>
<dd id="ClickHouse.Generator.apply_sql" class="function"><a href="../generator.html#Generator.apply_sql">apply_sql</a></dd>
<dd id="ClickHouse.Generator.grant_sql" class="function"><a href="../generator.html#Generator.grant_sql">grant_sql</a></dd>
<dd id="ClickHouse.Generator.grantprivilege_sql" class="function"><a href="../generator.html#Generator.grantprivilege_sql">grantprivilege_sql</a></dd>
<dd id="ClickHouse.Generator.grantprincipal_sql" class="function"><a href="../generator.html#Generator.grantprincipal_sql">grantprincipal_sql</a></dd>
<dd id="ClickHouse.Generator.columns_sql" class="function"><a href="../generator.html#Generator.columns_sql">columns_sql</a></dd>
<dd id="ClickHouse.Generator.overlay_sql" class="function"><a href="../generator.html#Generator.overlay_sql">overlay_sql</a></dd>
<dd id="ClickHouse.Generator.todouble_sql" class="function"><a href="../generator.html#Generator.todouble_sql">todouble_sql</a></dd>
<dd id="ClickHouse.Generator.string_sql" class="function"><a href="../generator.html#Generator.string_sql">string_sql</a></dd>
<dd id="ClickHouse.Generator.median_sql" class="function"><a href="../generator.html#Generator.median_sql">median_sql</a></dd>
<dd id="ClickHouse.Generator.overflowtruncatebehavior_sql" class="function"><a href="../generator.html#Generator.overflowtruncatebehavior_sql">overflowtruncatebehavior_sql</a></dd>
<dd id="ClickHouse.Generator.unixseconds_sql" class="function"><a href="../generator.html#Generator.unixseconds_sql">unixseconds_sql</a></dd>
<dd id="ClickHouse.Generator.arraysize_sql" class="function"><a href="../generator.html#Generator.arraysize_sql">arraysize_sql</a></dd>
<dd id="ClickHouse.Generator.attach_sql" class="function"><a href="../generator.html#Generator.attach_sql">attach_sql</a></dd>
<dd id="ClickHouse.Generator.detach_sql" class="function"><a href="../generator.html#Generator.detach_sql">detach_sql</a></dd>
<dd id="ClickHouse.Generator.attachoption_sql" class="function"><a href="../generator.html#Generator.attachoption_sql">attachoption_sql</a></dd>
<dd id="ClickHouse.Generator.featuresattime_sql" class="function"><a href="../generator.html#Generator.featuresattime_sql">featuresattime_sql</a></dd>
<dd id="ClickHouse.Generator.watermarkcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.watermarkcolumnconstraint_sql">watermarkcolumnconstraint_sql</a></dd>
<dd id="ClickHouse.Generator.encodeproperty_sql" class="function"><a href="../generator.html#Generator.encodeproperty_sql">encodeproperty_sql</a></dd>
<dd id="ClickHouse.Generator.includeproperty_sql" class="function"><a href="../generator.html#Generator.includeproperty_sql">includeproperty_sql</a></dd>
<dd id="ClickHouse.Generator.xmlelement_sql" class="function"><a href="../generator.html#Generator.xmlelement_sql">xmlelement_sql</a></dd>
<dd id="ClickHouse.Generator.partitionbyrangeproperty_sql" class="function"><a href="../generator.html#Generator.partitionbyrangeproperty_sql">partitionbyrangeproperty_sql</a></dd>
<dd id="ClickHouse.Generator.partitionbyrangepropertydynamic_sql" class="function"><a href="../generator.html#Generator.partitionbyrangepropertydynamic_sql">partitionbyrangepropertydynamic_sql</a></dd>
<dd id="ClickHouse.Generator.unpivotcolumns_sql" class="function"><a href="../generator.html#Generator.unpivotcolumns_sql">unpivotcolumns_sql</a></dd>
<dd id="ClickHouse.Generator.analyzesample_sql" class="function"><a href="../generator.html#Generator.analyzesample_sql">analyzesample_sql</a></dd>
<dd id="ClickHouse.Generator.analyzestatistics_sql" class="function"><a href="../generator.html#Generator.analyzestatistics_sql">analyzestatistics_sql</a></dd>
<dd id="ClickHouse.Generator.analyzehistogram_sql" class="function"><a href="../generator.html#Generator.analyzehistogram_sql">analyzehistogram_sql</a></dd>
<dd id="ClickHouse.Generator.analyzedelete_sql" class="function"><a href="../generator.html#Generator.analyzedelete_sql">analyzedelete_sql</a></dd>
<dd id="ClickHouse.Generator.analyzelistchainedrows_sql" class="function"><a href="../generator.html#Generator.analyzelistchainedrows_sql">analyzelistchainedrows_sql</a></dd>
<dd id="ClickHouse.Generator.analyzevalidate_sql" class="function"><a href="../generator.html#Generator.analyzevalidate_sql">analyzevalidate_sql</a></dd>
<dd id="ClickHouse.Generator.analyze_sql" class="function"><a href="../generator.html#Generator.analyze_sql">analyze_sql</a></dd>
<dd id="ClickHouse.Generator.xmltable_sql" class="function"><a href="../generator.html#Generator.xmltable_sql">xmltable_sql</a></dd>
<dd id="ClickHouse.Generator.xmlnamespace_sql" class="function"><a href="../generator.html#Generator.xmlnamespace_sql">xmlnamespace_sql</a></dd>
<dd id="ClickHouse.Generator.export_sql" class="function"><a href="../generator.html#Generator.export_sql">export_sql</a></dd>
<dd id="ClickHouse.Generator.declare_sql" class="function"><a href="../generator.html#Generator.declare_sql">declare_sql</a></dd>
<dd id="ClickHouse.Generator.declareitem_sql" class="function"><a href="../generator.html#Generator.declareitem_sql">declareitem_sql</a></dd>
<dd id="ClickHouse.Generator.recursivewithsearch_sql" class="function"><a href="../generator.html#Generator.recursivewithsearch_sql">recursivewithsearch_sql</a></dd>
<dd id="ClickHouse.Generator.parameterizedagg_sql" class="function"><a href="../generator.html#Generator.parameterizedagg_sql">parameterizedagg_sql</a></dd>
<dd id="ClickHouse.Generator.anonymousaggfunc_sql" class="function"><a href="../generator.html#Generator.anonymousaggfunc_sql">anonymousaggfunc_sql</a></dd>
<dd id="ClickHouse.Generator.combinedaggfunc_sql" class="function"><a href="../generator.html#Generator.combinedaggfunc_sql">combinedaggfunc_sql</a></dd>
<dd id="ClickHouse.Generator.combinedparameterizedagg_sql" class="function"><a href="../generator.html#Generator.combinedparameterizedagg_sql">combinedparameterizedagg_sql</a></dd>
<dd id="ClickHouse.Generator.show_sql" class="function"><a href="../generator.html#Generator.show_sql">show_sql</a></dd>
<dd id="ClickHouse.Generator.put_sql" class="function"><a href="../generator.html#Generator.put_sql">put_sql</a></dd>
</div>
</dl>
</div>
</section>
</main>
<script>
function escapeHTML(html) {
return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML;
}
const originalContent = document.querySelector("main.pdoc");
let currentContent = originalContent;
function setContent(innerHTML) {
let elem;
if (innerHTML) {
elem = document.createElement("main");
elem.classList.add("pdoc");
elem.innerHTML = innerHTML;
} else {
elem = originalContent;
}
if (currentContent !== elem) {
currentContent.replaceWith(elem);
currentContent = elem;
}
}
function getSearchTerm() {
return (new URL(window.location)).searchParams.get("search");
}
const searchBox = document.querySelector(".pdoc input[type=search]");
searchBox.addEventListener("input", function () {
let url = new URL(window.location);
if (searchBox.value.trim()) {
url.hash = "";
url.searchParams.set("search", searchBox.value);
} else {
url.searchParams.delete("search");
}
history.replaceState("", "", url.toString());
onInput();
});
window.addEventListener("popstate", onInput);
let search, searchErr;
async function initialize() {
try {
search = await new Promise((resolve, reject) => {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = true;
script.onload = () => resolve(window.pdocSearch);
script.onerror = (e) => reject(e);
script.src = "../../search.js";
document.getElementsByTagName("head")[0].appendChild(script);
});
} catch (e) {
console.error("Cannot fetch pdoc search index");
searchErr = "Cannot fetch search index.";
}
onInput();
document.querySelector("nav.pdoc").addEventListener("click", e => {
if (e.target.hash) {
searchBox.value = "";
searchBox.dispatchEvent(new Event("input"));
}
});
}
function onInput() {
setContent((() => {
const term = getSearchTerm();
if (!term) {
return null
}
if (searchErr) {
return `<h3>Error: ${searchErr}</h3>`
}
if (!search) {
return "<h3>Searching...</h3>"
}
window.scrollTo({top: 0, left: 0, behavior: 'auto'});
const results = search(term);
let html;
if (results.length === 0) {
html = `No search results for '${escapeHTML(term)}'.`
} else {
html = `<h4>${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.</h4>`;
}
for (let result of results.slice(0, 10)) {
let doc = result.doc;
let url = `../../${doc.modulename.replaceAll(".", "/")}.html`;
if (doc.qualname) {
url += `#${doc.qualname}`;
}
let heading;
switch (result.doc.kind) {
case "function":
if (doc.fullname.endsWith(".__init__")) {
heading = `<span class="name">${doc.fullname.replace(/\.__init__$/, "")}</span>${doc.signature}`;
} else {
heading = `<span class="def">${doc.funcdef}</span> <span class="name">${doc.fullname}</span>${doc.signature}`;
}
break;
case "class":
heading = `<span class="def">class</span> <span class="name">${doc.fullname}</span>`;
if (doc.bases)
heading += `<wbr>(<span class="base">${doc.bases}</span>)`;
heading += `:`;
break;
case "variable":
heading = `<span class="name">${doc.fullname}</span>`;
if (doc.annotation)
heading += `<span class="annotation">${doc.annotation}</span>`;
if (doc.default_value)
heading += `<span class="default_value"> = ${doc.default_value}</span>`;
break;
default:
heading = `<span class="name">${doc.fullname}</span>`;
break;
}
html += `
<section class="search-result">
<a href="${url}" class="attr ${doc.kind}">${heading}</a>
<div class="docstring">${doc.doc}</div>
</section>
`;
}
return html;
})());
}
if (getSearchTerm()) {
initialize();
searchBox.value = getSearchTerm();
onInput();
} else {
searchBox.addEventListener("focus", initialize, {once: true});
}
searchBox.addEventListener("keydown", e => {
if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) {
let focused = currentContent.querySelector(".search-result.focused");
if (!focused) {
currentContent.querySelector(".search-result").classList.add("focused");
} else if (
e.key === "ArrowDown"
&& focused.nextElementSibling
&& focused.nextElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.nextElementSibling.classList.add("focused");
focused.nextElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "ArrowUp"
&& focused.previousElementSibling
&& focused.previousElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.previousElementSibling.classList.add("focused");
focused.previousElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "Enter"
) {
focused.querySelector("a").click();
}
}
});
</script></body>
</html>