1
0
Fork 0
sqlglot/docs/sqlglot/dialects/presto.html
Daniel Baumann 1763c7a4ef
Merging upstream version 25.24.5.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-13 21:55:40 +01:00

4125 lines
No EOL
871 KiB
HTML

<!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 14.7.0"/>
<title>sqlglot.dialects.presto 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 .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_ADD_OR_SUB">DATE_ADD_OR_SUB</a>
</li>
<li>
<a class="class" href="#Presto">Presto</a>
<ul class="memberlist">
<li>
<a class="variable" href="#Presto.INDEX_OFFSET">INDEX_OFFSET</a>
</li>
<li>
<a class="variable" href="#Presto.NULL_ORDERING">NULL_ORDERING</a>
</li>
<li>
<a class="variable" href="#Presto.TIME_FORMAT">TIME_FORMAT</a>
</li>
<li>
<a class="variable" href="#Presto.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a>
</li>
<li>
<a class="variable" href="#Presto.SUPPORTS_SEMI_ANTI_JOIN">SUPPORTS_SEMI_ANTI_JOIN</a>
</li>
<li>
<a class="variable" href="#Presto.TYPED_DIVISION">TYPED_DIVISION</a>
</li>
<li>
<a class="variable" href="#Presto.TABLESAMPLE_SIZE_IS_PERCENT">TABLESAMPLE_SIZE_IS_PERCENT</a>
</li>
<li>
<a class="variable" href="#Presto.LOG_BASE_FIRST">LOG_BASE_FIRST</a>
</li>
<li>
<a class="variable" href="#Presto.TIME_MAPPING">TIME_MAPPING</a>
</li>
<li>
<a class="variable" href="#Presto.NORMALIZATION_STRATEGY">NORMALIZATION_STRATEGY</a>
</li>
<li>
<a class="variable" href="#Presto.ANNOTATORS">ANNOTATORS</a>
</li>
<li>
<a class="class" href="#Presto.Tokenizer">Presto.Tokenizer</a>
<ul class="memberlist">
<li>
<a class="variable" href="#Presto.Tokenizer.UNICODE_STRINGS">UNICODE_STRINGS</a>
</li>
<li>
<a class="variable" href="#Presto.Tokenizer.KEYWORDS">KEYWORDS</a>
</li>
</ul>
</li>
<li>
<a class="class" href="#Presto.Parser">Presto.Parser</a>
<ul class="memberlist">
<li>
<a class="variable" href="#Presto.Parser.VALUES_FOLLOWED_BY_PAREN">VALUES_FOLLOWED_BY_PAREN</a>
</li>
<li>
<a class="variable" href="#Presto.Parser.FUNCTIONS">FUNCTIONS</a>
</li>
<li>
<a class="variable" href="#Presto.Parser.FUNCTION_PARSERS">FUNCTION_PARSERS</a>
</li>
<li>
<a class="variable" href="#Presto.Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a>
</li>
<li>
<a class="variable" href="#Presto.Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a>
</li>
<li>
<a class="variable" href="#Presto.Parser.SHOW_TRIE">SHOW_TRIE</a>
</li>
<li>
<a class="variable" href="#Presto.Parser.SET_TRIE">SET_TRIE</a>
</li>
</ul>
</li>
<li>
<a class="class" href="#Presto.Generator">Presto.Generator</a>
<ul class="memberlist">
<li>
<a class="variable" href="#Presto.Generator.INTERVAL_ALLOWS_PLURAL_FORM">INTERVAL_ALLOWS_PLURAL_FORM</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.JOIN_HINTS">JOIN_HINTS</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.TABLE_HINTS">TABLE_HINTS</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.QUERY_HINTS">QUERY_HINTS</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.IS_BOOL_ALLOWED">IS_BOOL_ALLOWED</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.TZ_TO_WITH_TIME_ZONE">TZ_TO_WITH_TIME_ZONE</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.NVL2_SUPPORTED">NVL2_SUPPORTED</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.STRUCT_DELIMITER">STRUCT_DELIMITER</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.LIMIT_ONLY_LITERALS">LIMIT_ONLY_LITERALS</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.SUPPORTS_SINGLE_ARG_CONCAT">SUPPORTS_SINGLE_ARG_CONCAT</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.LIKE_PROPERTY_INSIDE_SCHEMA">LIKE_PROPERTY_INSIDE_SCHEMA</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.MULTI_ARG_DISTINCT">MULTI_ARG_DISTINCT</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.SUPPORTS_TO_NUMBER">SUPPORTS_TO_NUMBER</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.HEX_FUNC">HEX_FUNC</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.PARSE_JSON_NAME">PARSE_JSON_NAME</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.PAD_FILL_PATTERN_IS_REQUIRED">PAD_FILL_PATTERN_IS_REQUIRED</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE">EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.PROPERTIES_LOCATION">PROPERTIES_LOCATION</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.TYPE_MAPPING">TYPE_MAPPING</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.TRANSFORMS">TRANSFORMS</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.RESERVED_KEYWORDS">RESERVED_KEYWORDS</a>
</li>
<li>
<a class="function" href="#Presto.Generator.md5_sql">md5_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.strtounix_sql">strtounix_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.bracket_sql">bracket_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.struct_sql">struct_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.interval_sql">interval_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.transaction_sql">transaction_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.offset_limit_modifiers">offset_limit_modifiers</a>
</li>
<li>
<a class="function" href="#Presto.Generator.create_sql">create_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.delete_sql">delete_sql</a>
</li>
<li>
<a class="function" href="#Presto.Generator.jsonextract_sql">jsonextract_sql</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.SELECT_KINDS">SELECT_KINDS</a>
</li>
<li>
<a class="variable" href="#Presto.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS">AFTER_HAVING_MODIFIER_TRANSFORMS</a>
</li>
</ul>
</li>
<li>
<a class="variable" href="#Presto.SUPPORTS_COLUMN_JOIN_MARKS">SUPPORTS_COLUMN_JOIN_MARKS</a>
</li>
<li>
<a class="variable" href="#Presto.tokenizer_class">tokenizer_class</a>
</li>
<li>
<a class="variable" href="#Presto.jsonpath_tokenizer_class">jsonpath_tokenizer_class</a>
</li>
<li>
<a class="variable" href="#Presto.parser_class">parser_class</a>
</li>
<li>
<a class="variable" href="#Presto.generator_class">generator_class</a>
</li>
<li>
<a class="variable" href="#Presto.TIME_TRIE">TIME_TRIE</a>
</li>
<li>
<a class="variable" href="#Presto.FORMAT_TRIE">FORMAT_TRIE</a>
</li>
<li>
<a class="variable" href="#Presto.INVERSE_TIME_MAPPING">INVERSE_TIME_MAPPING</a>
</li>
<li>
<a class="variable" href="#Presto.INVERSE_TIME_TRIE">INVERSE_TIME_TRIE</a>
</li>
<li>
<a class="variable" href="#Presto.INVERSE_FORMAT_MAPPING">INVERSE_FORMAT_MAPPING</a>
</li>
<li>
<a class="variable" href="#Presto.INVERSE_FORMAT_TRIE">INVERSE_FORMAT_TRIE</a>
</li>
<li>
<a class="variable" href="#Presto.INVERSE_CREATABLE_KIND_MAPPING">INVERSE_CREATABLE_KIND_MAPPING</a>
</li>
<li>
<a class="variable" href="#Presto.ESCAPED_SEQUENCES">ESCAPED_SEQUENCES</a>
</li>
<li>
<a class="variable" href="#Presto.QUOTE_START">QUOTE_START</a>
</li>
<li>
<a class="variable" href="#Presto.QUOTE_END">QUOTE_END</a>
</li>
<li>
<a class="variable" href="#Presto.IDENTIFIER_START">IDENTIFIER_START</a>
</li>
<li>
<a class="variable" href="#Presto.IDENTIFIER_END">IDENTIFIER_END</a>
</li>
<li>
<a class="variable" href="#Presto.BIT_START">BIT_START</a>
</li>
<li>
<a class="variable" href="#Presto.BIT_END">BIT_END</a>
</li>
<li>
<a class="variable" href="#Presto.HEX_START">HEX_START</a>
</li>
<li>
<a class="variable" href="#Presto.HEX_END">HEX_END</a>
</li>
<li>
<a class="variable" href="#Presto.BYTE_START">BYTE_START</a>
</li>
<li>
<a class="variable" href="#Presto.BYTE_END">BYTE_END</a>
</li>
<li>
<a class="variable" href="#Presto.UNICODE_START">UNICODE_START</a>
</li>
<li>
<a class="variable" href="#Presto.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/presto.py">Edit on GitHub</a>
<h1 class="modulename">
<a href="./../../sqlglot.html">sqlglot</a><wbr>.<a href="./../dialects.html">dialects</a><wbr>.presto </h1>
<input id="mod-presto-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-source-button" for="mod-presto-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="nn">__future__</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><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span> <span class="nn">typing</span> <span class="k">as</span> <span class="nn">t</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">from</span> <span class="nn">sqlglot</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 class="p">,</span> <span class="n">transforms</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="p">(</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a> <span class="n">Dialect</span><span class="p">,</span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a> <span class="n">NormalizationStrategy</span><span class="p">,</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a> <span class="n">binary_from_function</span><span class="p">,</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a> <span class="n">bool_xor_sql</span><span class="p">,</span>
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="n">date_trunc_to_time</span><span class="p">,</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a> <span class="n">datestrtodate_sql</span><span class="p">,</span>
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a> <span class="n">encode_decode_sql</span><span class="p">,</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="n">build_formatted_time</span><span class="p">,</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="n">if_sql</span><span class="p">,</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">left_to_substring_sql</span><span class="p">,</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="n">no_ilike_sql</span><span class="p">,</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> <span class="n">no_pivot_sql</span><span class="p">,</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="n">no_timestamp_sql</span><span class="p">,</span>
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="n">regexp_extract_sql</span><span class="p">,</span>
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="n">rename_func</span><span class="p">,</span>
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="n">right_to_substring_sql</span><span class="p">,</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="n">sha256_sql</span><span class="p">,</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="n">struct_extract_sql</span><span class="p">,</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="n">str_position_sql</span><span class="p">,</span>
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="n">timestrtotime_sql</span><span class="p">,</span>
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">ts_or_ds_add_cast</span><span class="p">,</span>
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="n">unit_to_str</span><span class="p">,</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">sequence_sql</span><span class="p">,</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="n">build_regexp_extract</span><span class="p">,</span>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="p">)</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.hive</span> <span class="kn">import</span> <span class="n">Hive</span>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.mysql</span> <span class="kn">import</span> <span class="n">MySQL</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">apply_index_offset</span><span class="p">,</span> <span class="n">seq_get</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a><span class="kn">from</span> <span class="nn">sqlglot.tokens</span> <span class="kn">import</span> <span class="n">TokenType</span>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a><span class="kn">from</span> <span class="nn">sqlglot.transforms</span> <span class="kn">import</span> <span class="n">unqualify_columns</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="n">DATE_ADD_OR_SUB</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">TimestampAdd</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">]</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="nf">_explode_to_unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">Lateral</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="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">Explode</span><span class="p">):</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</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><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">(</span>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span>
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">],</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</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-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="n">offset</span><span class="o">=</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">Posexplode</span><span class="p">),</span>
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="p">),</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">&quot;cross&quot;</span><span class="p">,</span>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="p">)</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="p">)</span>
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">lateral_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a>
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a>
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a><span class="k">def</span> <span class="nf">_initcap_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">Initcap</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="n">regex</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&quot;(\w)(\w*)&quot;</span>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;REGEXP_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="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, &#39;</span><span class="si">{</span><span class="n">regex</span><span class="si">}</span><span class="s2">&#39;, x -&gt; UPPER(x[1]) || LOWER(x[2]))&quot;</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a>
</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 class="k">def</span> <span class="nf">_no_sort_array</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">SortArray</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</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;asc&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">false</span><span class="p">():</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="n">comparator</span> <span class="o">=</span> <span class="s2">&quot;(a, b) -&gt; CASE WHEN a &lt; b THEN 1 WHEN a &gt; b THEN -1 ELSE 0 END&quot;</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="n">comparator</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</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;ARRAY_SORT&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">comparator</span><span class="p">)</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a>
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a>
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="k">def</span> <span class="nf">_schema_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">Schema</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</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">Property</span><span class="p">):</span>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">columns</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="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39;&quot;</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;ARRAY[</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">]&quot;</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span>
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="k">for</span> <span class="n">schema</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</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">Schema</span><span class="p">):</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">column_defs</span> <span class="o">=</span> <span class="n">schema</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">ColumnDef</span><span class="p">)</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="k">if</span> <span class="n">column_defs</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</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">Property</span><span class="p">):</span>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">column_defs</span><span class="p">)</span>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a>
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a>
</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">def</span> <span class="nf">_quantile_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">&quot;Presto does not support exact quantiles&quot;</span><span class="p">)</span>
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</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;APPROX_PERCENTILE&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">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;quantile&quot;</span><span class="p">))</span>
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a>
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a><span class="k">def</span> <span class="nf">_str_to_time_sql</span><span class="p">(</span>
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">StrToDate</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span>
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;DATE_PARSE&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="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</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="nf">_ts_or_ds_to_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">TsOrDsToDate</span><span class="p">)</span> <span class="o">-&gt;</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="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</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="n">time_format</span> <span class="ow">and</span> <span class="n">time_format</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">TIME_FORMAT</span><span class="p">,</span> <span class="n">Presto</span><span class="o">.</span><span class="n">DATE_FORMAT</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="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">_str_to_time_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="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span>
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</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><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="n">exp</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">cast</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">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="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">DATE</span><span class="p">)</span>
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="p">)</span>
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a>
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a>
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="k">def</span> <span class="nf">_ts_or_ds_add_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">TsOrDsAdd</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</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;DATE_ADD&quot;</span><span class="p">,</span> <span class="n">unit</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="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</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="nf">_ts_or_ds_diff_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">TsOrDsDiff</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="n">this</span> <span class="o">=</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="o">.</span><span class="n">this</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">TIMESTAMP</span><span class="p">)</span>
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="n">expr</span> <span class="o">=</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="o">.</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="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">)</span>
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</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;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">unit</span><span class="p">,</span> <span class="n">expr</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span>
</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a>
</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a>
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a><span class="k">def</span> <span class="nf">_build_approx_percentile</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">Expression</span><span class="p">:</span>
</span><span id="L-119"><a href="#L-119"><span class="linenos">119</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">4</span><span class="p">:</span>
</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxQuantile</span><span class="p">(</span>
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <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-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="n">weight</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">1</span><span class="p">),</span>
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="n">quantile</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-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="n">accuracy</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">3</span><span class="p">),</span>
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <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">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxQuantile</span><span class="p">(</span>
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <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">quantile</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">1</span><span class="p">),</span> <span class="n">accuracy</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-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="p">)</span>
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxQuantile</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-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><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a><span class="k">def</span> <span class="nf">_build_from_unixtime</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">Expression</span><span class="p">:</span>
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</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-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">(</span>
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <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-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">hours</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">1</span><span class="p">),</span>
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">minutes</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-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="p">)</span>
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</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">2</span><span class="p">:</span>
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</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">zone</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">1</span><span class="p">))</span>
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a>
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</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-144"><a href="#L-144"><span class="linenos">144</span></a>
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a>
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a><span class="k">def</span> <span class="nf">_first_last_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">Func</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a><span class="sd"> Trino doesn&#39;t support FIRST / LAST as functions, but they&#39;re valid in the context</span>
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a><span class="sd"> of MATCH_RECOGNIZE, so we need to preserve them in that case. In all other cases</span>
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a><span class="sd"> they&#39;re converted into an ARBITRARY call.</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="sd"> Reference: https://trino.io/docs/current/sql/match-recognize.html#logical-navigation-functions</span>
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</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">find_ancestor</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">):</span>
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="k">return</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-156"><a href="#L-156"><span class="linenos">156</span></a>
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARBITRARY&quot;</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-158"><a href="#L-158"><span class="linenos">158</span></a>
</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">def</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">Presto</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-161"><a href="#L-161"><span class="linenos">161</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-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="n">timestamp</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-163"><a href="#L-163"><span class="linenos">163</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-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;FROM_UNIXTIME&quot;</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-165"><a href="#L-165"><span class="linenos">165</span></a>
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;FROM_UNIXTIME(CAST(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2"> AS DOUBLE) / POW(10, </span><span class="si">{</span><span class="n">scale</span><span class="si">}</span><span class="s2">))&quot;</span>
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a>
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a>
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a><span class="k">def</span> <span class="nf">_to_int</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">Expression</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-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a>
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</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-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">INTEGER_TYPES</span><span class="p">:</span>
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</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">expression</span><span class="p">,</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">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">)</span>
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="k">return</span> <span class="n">expression</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><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a><span class="k">def</span> <span class="nf">_build_to_char</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-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">fmt</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">1</span><span class="p">)</span>
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fmt</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-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="c1"># We uppercase this to match Teradata&#39;s format mapping keys</span>
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">fmt</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">fmt</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a>
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="c1"># We use &quot;teradata&quot; on purpose here, because the time formats are different in Presto.</span>
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="c1"># See https://prestodb.io/docs/current/functions/teradata.html?highlight=to_char#to_char</span>
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="k">return</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;teradata&quot;</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span>
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a>
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a>
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a><span class="k">def</span> <span class="nf">_date_delta_sql</span><span class="p">(</span>
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">negate_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a><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">Presto</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">DATE_ADD_OR_SUB</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span>
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="k">def</span> <span class="nf">_delta_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Presto</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">DATE_ADD_OR_SUB</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">_to_int</span><span class="p">(</span><span class="bp">self</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-195"><a href="#L-195"><span class="linenos">195</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-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="n">name</span><span class="p">,</span>
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="n">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span>
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">interval</span> <span class="o">*</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">negate_interval</span> <span class="k">else</span> <span class="n">interval</span><span class="p">,</span>
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</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="k">return</span> <span class="n">_delta_sql</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><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a><span class="k">class</span> <span class="nc">Presto</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</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-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="n">MySQL</span><span class="o">.</span><span class="n">TIME_FORMAT</span>
</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="n">STRICT_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="n">SUPPORTS_SEMI_ANTI_JOIN</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</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-214"><a href="#L-214"><span class="linenos">214</span></a>
</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="n">MySQL</span><span class="o">.</span><span class="n">TIME_MAPPING</span>
</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a>
</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="c1"># https://github.com/trinodb/trino/issues/17</span>
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="c1"># https://github.com/trinodb/trino/issues/12289</span>
</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="c1"># https://github.com/prestodb/presto/issues/2863</span>
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</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_INSENSITIVE</span>
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a>
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="c1"># The result of certain math functions in Presto/Trino is of type</span>
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="c1"># equal to the input type e.g: FLOOR(5.5/2) -&gt; DECIMAL, FLOOR(5/2) -&gt; BIGINT</span>
</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">ANNOTATORS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="o">**</span><span class="n">Dialect</span><span class="o">.</span><span class="n">ANNOTATORS</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">Floor</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ceil</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">),</span>
</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Round</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sign</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</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">Abs</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_type</span><span class="p">(</span><span class="n">e</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">DOUBLE</span><span class="p">),</span>
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="p">}</span>
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a>
</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="k">class</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-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="n">UNICODE_STRINGS</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">q</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="k">for</span> <span class="n">q</span> <span class="ow">in</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</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="nb">str</span><span class="p">],</span> <span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">QUOTES</span><span class="p">)</span>
</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;U&amp;&quot;</span><span class="p">,</span> <span class="s2">&quot;u&amp;&quot;</span><span class="p">)</span>
</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="p">]</span>
</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a>
</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</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-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="s2">&quot;START&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="s2">&quot;MATCH_RECOGNIZE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">,</span>
</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="s2">&quot;ROW&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-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="s2">&quot;IPADDRESS&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPADDRESS</span><span class="p">,</span>
</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="s2">&quot;IPPREFIX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPPREFIX</span><span class="p">,</span>
</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="s2">&quot;TDIGEST&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TDIGEST</span><span class="p">,</span>
</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="s2">&quot;HYPERLOGLOG&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HLLSKETCH</span><span class="p">,</span>
</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="p">}</span>
</span><span id="L-254"><a href="#L-254"><span class="linenos">254</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-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;QUALIFY&quot;</span><span class="p">)</span>
</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a>
</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="k">class</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-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="n">VALUES_FOLLOWED_BY_PAREN</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a>
</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-261"><a href="#L-261"><span class="linenos">261</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-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="s2">&quot;ARBITRARY&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-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="s2">&quot;APPROX_DISTINCT&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-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="s2">&quot;APPROX_PERCENTILE&quot;</span><span class="p">:</span> <span class="n">_build_approx_percentile</span><span class="p">,</span>
</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="s2">&quot;BITWISE_AND&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</span><span class="p">),</span>
</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="s2">&quot;BITWISE_NOT&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">BitwiseNot</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-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="s2">&quot;BITWISE_OR&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</span><span class="p">),</span>
</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="s2">&quot;BITWISE_XOR&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">),</span>
</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="s2">&quot;CARDINALITY&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="s2">&quot;CONTAINS&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="s2">&quot;DATE_ADD&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">DateAdd</span><span class="p">(</span>
</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <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">2</span><span class="p">),</span> <span class="n">expression</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">1</span><span class="p">),</span> <span class="n">unit</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-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="p">),</span>
</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="s2">&quot;DATE_DIFF&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">DateDiff</span><span class="p">(</span>
</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> <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">2</span><span class="p">),</span> <span class="n">expression</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">1</span><span class="p">),</span> <span class="n">unit</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-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="p">),</span>
</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">:</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;presto&quot;</span><span class="p">),</span>
</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="s2">&quot;DATE_PARSE&quot;</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> <span class="s2">&quot;presto&quot;</span><span class="p">),</span>
</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="n">date_trunc_to_time</span><span class="p">,</span>
</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="s2">&quot;DAY_OF_WEEK&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeekIso</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="s2">&quot;ELEMENT_AT&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">Bracket</span><span class="p">(</span>
</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <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">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)],</span> <span class="n">offset</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span>
</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="p">),</span>
</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="s2">&quot;FROM_HEX&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unhex</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="s2">&quot;FROM_UNIXTIME&quot;</span><span class="p">:</span> <span class="n">_build_from_unixtime</span><span class="p">,</span>
</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="s2">&quot;FROM_UTF8&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">Decode</span><span class="p">(</span>
</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <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">replace</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">1</span><span class="p">),</span> <span class="n">charset</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="s2">&quot;utf-8&quot;</span><span class="p">)</span>
</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="p">),</span>
</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="s2">&quot;REGEXP_EXTRACT&quot;</span><span class="p">:</span> <span class="n">build_regexp_extract</span><span class="p">,</span>
</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="s2">&quot;REGEXP_REPLACE&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">RegexpReplace</span><span class="p">(</span>
</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <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-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="n">expression</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">1</span><span class="p">),</span>
</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="n">replacement</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 class="ow">or</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="s2">&quot;&quot;</span><span class="p">),</span>
</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="p">),</span>
</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="s2">&quot;ROW&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-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="s2">&quot;SEQUENCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="s2">&quot;SET_AGG&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayUniqueAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="s2">&quot;SPLIT_TO_MAP&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToMap</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;STRPOS&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">StrPosition</span><span class="p">(</span>
</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a> <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">substr</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">1</span><span class="p">),</span> <span class="n">instance</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-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="p">),</span>
</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">_build_to_char</span><span class="p">,</span>
</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="s2">&quot;TO_UNIXTIME&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="s2">&quot;TO_UTF8&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">Encode</span><span class="p">(</span>
</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <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">charset</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="s2">&quot;utf-8&quot;</span><span class="p">)</span>
</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="p">),</span>
</span><span id="L-308"><a href="#L-308"><span class="linenos">308</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-309"><a href="#L-309"><span class="linenos">309</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-310"><a href="#L-310"><span class="linenos">310</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-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="p">}</span>
</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a>
</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="n">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">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-314"><a href="#L-314"><span class="linenos">314</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;TRIM&quot;</span><span class="p">)</span>
</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a>
</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="k">class</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-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="n">INTERVAL_ALLOWS_PLURAL_FORM</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="n">IS_BOOL_ALLOWED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="n">TZ_TO_WITH_TIME_ZONE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-324"><a href="#L-324"><span class="linenos">324</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-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="n">LIMIT_ONLY_LITERALS</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="n">SUPPORTS_SINGLE_ARG_CONCAT</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="n">SUPPORTS_TO_NUMBER</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a> <span class="n">HEX_FUNC</span> <span class="o">=</span> <span class="s2">&quot;TO_HEX&quot;</span>
</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a> <span class="n">PARSE_JSON_NAME</span> <span class="o">=</span> <span class="s2">&quot;JSON_PARSE&quot;</span>
</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="n">PAD_FILL_PATTERN_IS_REQUIRED</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="n">EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a>
</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-336"><a href="#L-336"><span class="linenos">336</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-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</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-338"><a href="#L-338"><span class="linenos">338</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-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="p">}</span>
</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a>
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</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-343"><a href="#L-343"><span class="linenos">343</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;INTEGER&quot;</span><span class="p">,</span>
</span><span id="L-344"><a href="#L-344"><span class="linenos">344</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;REAL&quot;</span><span class="p">,</span>
</span><span id="L-345"><a href="#L-345"><span class="linenos">345</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">BINARY</span><span class="p">:</span> <span class="s2">&quot;VARBINARY&quot;</span><span class="p">,</span>
</span><span id="L-346"><a href="#L-346"><span class="linenos">346</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;VARCHAR&quot;</span><span class="p">,</span>
</span><span id="L-347"><a href="#L-347"><span class="linenos">347</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">TIMETZ</span><span class="p">:</span> <span class="s2">&quot;TIME&quot;</span><span class="p">,</span>
</span><span id="L-348"><a href="#L-348"><span class="linenos">348</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="L-349"><a href="#L-349"><span class="linenos">349</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;ROW&quot;</span><span class="p">,</span>
</span><span id="L-350"><a href="#L-350"><span class="linenos">350</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="L-351"><a href="#L-351"><span class="linenos">351</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="L-352"><a href="#L-352"><span class="linenos">352</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">HLLSKETCH</span><span class="p">:</span> <span class="s2">&quot;HYPERLOGLOG&quot;</span><span class="p">,</span>
</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a> <span class="p">}</span>
</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a>
</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-356"><a href="#L-356"><span class="linenos">356</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-357"><a href="#L-357"><span class="linenos">357</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;ARBITRARY&quot;</span><span class="p">),</span>
</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxQuantile</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;APPROX_PERCENTILE&quot;</span><span class="p">),</span>
</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAX_BY&quot;</span><span class="p">),</span>
</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MIN_BY&quot;</span><span class="p">),</span>
</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</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;ARRAY[</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">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-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAny</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ANY_MATCH&quot;</span><span class="p">),</span>
</span><span id="L-363"><a href="#L-363"><span class="linenos">363</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;CONCAT&quot;</span><span class="p">),</span>
</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CONTAINS&quot;</span><span class="p">),</span>
</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CARDINALITY&quot;</span><span class="p">),</span>
</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayToString</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_JOIN&quot;</span><span class="p">),</span>
</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayUniqueAgg</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SET_AGG&quot;</span><span class="p">),</span>
</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;AT_TIMEZONE&quot;</span><span class="p">),</span>
</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</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;BITWISE_AND&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-370"><a href="#L-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</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-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="s2">&quot;BITWISE_ARITHMETIC_SHIFT_LEFT&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><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="p">),</span>
</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</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;BITWISE_NOT&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-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</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;BITWISE_OR&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-375"><a href="#L-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</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-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="s2">&quot;BITWISE_ARITHMETIC_SHIFT_RIGHT&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><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a> <span class="p">),</span>
</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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;BITWISE_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><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">epoch_cast_to_ts</span><span class="p">]),</span>
</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</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;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</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-383"><a href="#L-383"><span class="linenos">383</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">unit_to_str</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">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="p">),</span>
</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(DATE_FORMAT(</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="n">Presto</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">,</span> <span class="n">negate_interval</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</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">func</span><span class="p">(</span><span class="s1">&#39;DAY_OF_WEEK&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2"> % 7) + 1)&quot;</span><span class="p">,</span>
</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeekIso</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAY_OF_WEEK&quot;</span><span class="p">),</span>
</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</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">encode_decode_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="s2">&quot;FROM_UTF8&quot;</span><span class="p">),</span>
</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(DATE_PARSE(CAST(</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"> AS VARCHAR), </span><span class="si">{</span><span class="n">Presto</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</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">encode_decode_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="s2">&quot;TO_UTF8&quot;</span><span class="p">),</span>
</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</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;FORMAT=&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">First</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FirstValue</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FromTimeZone</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;WITH_TIMEZONE(</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;zone&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AT TIME ZONE &#39;UTC&#39;&quot;</span><span class="p">,</span>
</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">:</span> <span class="n">sequence_sql</span><span class="p">,</span>
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateDateArray</span><span class="p">:</span> <span class="n">sequence_sql</span><span class="p">,</span>
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unalias_group</span><span class="p">]),</span>
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</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-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="s2">&quot;ARRAY_JOIN&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;ARRAY_AGG&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;separator&quot;</span><span class="p">)</span>
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="p">),</span>
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">:</span> <span class="n">if_sql</span><span class="p">(),</span>
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">:</span> <span class="n">no_ilike_sql</span><span class="p">,</span>
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Initcap</span><span class="p">:</span> <span class="n">_initcap_sql</span><span class="p">,</span>
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</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">jsonextract_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Last</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastValue</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</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;LAST_DAY_OF_MONTH&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-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="n">_explode_to_unnest_sql</span><span class="p">,</span>
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">:</span> <span class="n">left_to_substring_sql</span><span class="p">,</span>
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LEVENSHTEIN_DISTANCE&quot;</span><span class="p">),</span>
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</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-419"><a href="#L-419"><span class="linenos">419</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-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Right</span><span class="p">:</span> <span class="n">right_to_substring_sql</span><span class="p">,</span>
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">:</span> <span class="n">_schema_sql</span><span class="p">,</span>
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</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-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span>
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="p">[</span>
</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span>
</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_distinct_on</span><span class="p">,</span>
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">explode_to_unnest</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span>
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="p">]</span>
</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="p">),</span>
</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_no_sort_array</span><span class="p">,</span>
</span><span id="L-434"><a href="#L-434"><span class="linenos">434</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">str_position_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">generate_instance</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</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;CAST(</span><span class="si">{</span><span class="n">_str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToMap</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SPLIT_TO_MAP&quot;</span><span class="p">),</span>
</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">_str_to_time_sql</span><span class="p">,</span>
</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span>
</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unnest_generate_series</span><span class="p">]),</span>
</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="L-442"><a href="#L-442"><span class="linenos">442</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><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
</span><span id="L-444"><a href="#L-444"><span class="linenos">444</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-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</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-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="s2">&quot;TO_UNIXTIME&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;DATE_PARSE&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">Presto</span><span class="o">.</span><span class="n">TIME_FORMAT</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 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 class="s2">&quot;DATE_FORMAT&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><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;TO_UNIXTIME&quot;</span><span class="p">),</span>
</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</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;DATE_FORMAT&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><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">epoch_cast_to_ts</span><span class="p">]),</span>
</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</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"> AS VARCHAR), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_ts_or_ds_diff_sql</span><span class="p">,</span>
</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">:</span> <span class="n">_ts_or_ds_to_date_sql</span><span class="p">,</span>
</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Unhex</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;FROM_HEX&quot;</span><span class="p">),</span>
</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;DATE_FORMAT(FROM_UNIXTIME(</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">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
</span><span id="L-460"><a href="#L-460"><span class="linenos">460</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-461"><a href="#L-461"><span class="linenos">461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(FROM_UNIXTIME(</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">) AS VARCHAR)&quot;</span><span class="p">,</span>
</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_recursive_cte_column_names</span><span class="p">]),</span>
</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span>
</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">remove_within_group_for_percentiles</span><span class="p">]</span>
</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="p">),</span>
</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
</span><span id="L-469"><a href="#L-469"><span class="linenos">469</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-470"><a href="#L-470"><span class="linenos">470</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-471"><a href="#L-471"><span class="linenos">471</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-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_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <span class="s2">&quot;alter&quot;</span><span class="p">,</span>
</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="s2">&quot;and&quot;</span><span class="p">,</span>
</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="s2">&quot;as&quot;</span><span class="p">,</span>
</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> <span class="s2">&quot;between&quot;</span><span class="p">,</span>
</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="s2">&quot;by&quot;</span><span class="p">,</span>
</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a> <span class="s2">&quot;case&quot;</span><span class="p">,</span>
</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a> <span class="s2">&quot;cast&quot;</span><span class="p">,</span>
</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="s2">&quot;constraint&quot;</span><span class="p">,</span>
</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> <span class="s2">&quot;create&quot;</span><span class="p">,</span>
</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="s2">&quot;cross&quot;</span><span class="p">,</span>
</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="s2">&quot;current_time&quot;</span><span class="p">,</span>
</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> <span class="s2">&quot;current_timestamp&quot;</span><span class="p">,</span>
</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="s2">&quot;deallocate&quot;</span><span class="p">,</span>
</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a> <span class="s2">&quot;delete&quot;</span><span class="p">,</span>
</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="s2">&quot;describe&quot;</span><span class="p">,</span>
</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> <span class="s2">&quot;distinct&quot;</span><span class="p">,</span>
</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="s2">&quot;drop&quot;</span><span class="p">,</span>
</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="s2">&quot;else&quot;</span><span class="p">,</span>
</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="s2">&quot;end&quot;</span><span class="p">,</span>
</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="s2">&quot;escape&quot;</span><span class="p">,</span>
</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="s2">&quot;except&quot;</span><span class="p">,</span>
</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="s2">&quot;execute&quot;</span><span class="p">,</span>
</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a> <span class="s2">&quot;exists&quot;</span><span class="p">,</span>
</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="s2">&quot;extract&quot;</span><span class="p">,</span>
</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="s2">&quot;false&quot;</span><span class="p">,</span>
</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> <span class="s2">&quot;for&quot;</span><span class="p">,</span>
</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="s2">&quot;from&quot;</span><span class="p">,</span>
</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> <span class="s2">&quot;full&quot;</span><span class="p">,</span>
</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="s2">&quot;group&quot;</span><span class="p">,</span>
</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> <span class="s2">&quot;having&quot;</span><span class="p">,</span>
</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="s2">&quot;in&quot;</span><span class="p">,</span>
</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="s2">&quot;inner&quot;</span><span class="p">,</span>
</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="s2">&quot;insert&quot;</span><span class="p">,</span>
</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="s2">&quot;intersect&quot;</span><span class="p">,</span>
</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="s2">&quot;into&quot;</span><span class="p">,</span>
</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> <span class="s2">&quot;is&quot;</span><span class="p">,</span>
</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="s2">&quot;join&quot;</span><span class="p">,</span>
</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a> <span class="s2">&quot;left&quot;</span><span class="p">,</span>
</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="s2">&quot;like&quot;</span><span class="p">,</span>
</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a> <span class="s2">&quot;natural&quot;</span><span class="p">,</span>
</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> <span class="s2">&quot;not&quot;</span><span class="p">,</span>
</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a> <span class="s2">&quot;null&quot;</span><span class="p">,</span>
</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="s2">&quot;on&quot;</span><span class="p">,</span>
</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> <span class="s2">&quot;or&quot;</span><span class="p">,</span>
</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="s2">&quot;order&quot;</span><span class="p">,</span>
</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="s2">&quot;outer&quot;</span><span class="p">,</span>
</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="s2">&quot;prepare&quot;</span><span class="p">,</span>
</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="s2">&quot;right&quot;</span><span class="p">,</span>
</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="s2">&quot;select&quot;</span><span class="p">,</span>
</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="s2">&quot;table&quot;</span><span class="p">,</span>
</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="s2">&quot;then&quot;</span><span class="p">,</span>
</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="s2">&quot;true&quot;</span><span class="p">,</span>
</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="s2">&quot;union&quot;</span><span class="p">,</span>
</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> <span class="s2">&quot;using&quot;</span><span class="p">,</span>
</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="s2">&quot;values&quot;</span><span class="p">,</span>
</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="s2">&quot;when&quot;</span><span class="p">,</span>
</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="s2">&quot;where&quot;</span><span class="p">,</span>
</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a> <span class="s2">&quot;with&quot;</span><span class="p">,</span>
</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a> <span class="p">}</span>
</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a>
</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">md5_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">MD5</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-536"><a href="#L-536"><span class="linenos">536</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-537"><a href="#L-537"><span class="linenos">537</span></a>
</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a>
</span><span id="L-541"><a href="#L-541"><span class="linenos">541</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="L-542"><a href="#L-542"><span class="linenos">542</span></a>
</span><span id="L-543"><a href="#L-543"><span class="linenos">543</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</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">TEXT_TYPES</span><span class="p">):</span>
</span><span id="L-544"><a href="#L-544"><span class="linenos">544</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</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">charset</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="s2">&quot;utf-8&quot;</span><span class="p">))</span>
</span><span id="L-545"><a href="#L-545"><span class="linenos">545</span></a>
</span><span id="L-546"><a href="#L-546"><span class="linenos">546</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;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;TO_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="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-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="k">def</span> <span class="nf">strtounix_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">StrToUnix</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-549"><a href="#L-549"><span class="linenos">549</span></a> <span class="c1"># Since `TO_UNIXTIME` requires a `TIMESTAMP`, we need to parse the argument into one.</span>
</span><span id="L-550"><a href="#L-550"><span class="linenos">550</span></a> <span class="c1"># To do this, we first try to `DATE_PARSE` it, but since this can fail when there&#39;s a</span>
</span><span id="L-551"><a href="#L-551"><span class="linenos">551</span></a> <span class="c1"># timezone involved, we wrap it in a `TRY` call and use `PARSE_DATETIME` as a fallback,</span>
</span><span id="L-552"><a href="#L-552"><span class="linenos">552</span></a> <span class="c1"># which seems to be using the same time mapping as Hive, as per:</span>
</span><span id="L-553"><a href="#L-553"><span class="linenos">553</span></a> <span class="c1"># https://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html</span>
</span><span id="L-554"><a href="#L-554"><span class="linenos">554</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-555"><a href="#L-555"><span class="linenos">555</span></a> <span class="n">value_as_text</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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><span id="L-556"><a href="#L-556"><span class="linenos">556</span></a> <span class="n">value_as_timestamp</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="L-557"><a href="#L-557"><span class="linenos">557</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="L-558"><a href="#L-558"><span class="linenos">558</span></a> <span class="p">)</span>
</span><span id="L-559"><a href="#L-559"><span class="linenos">559</span></a>
</span><span id="L-560"><a href="#L-560"><span class="linenos">560</span></a> <span class="n">parse_without_tz</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;DATE_PARSE&quot;</span><span class="p">,</span> <span class="n">value_as_text</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">expression</span><span class="p">))</span>
</span><span id="L-561"><a href="#L-561"><span class="linenos">561</span></a>
</span><span id="L-562"><a href="#L-562"><span class="linenos">562</span></a> <span class="n">formatted_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">,</span> <span class="n">value_as_timestamp</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">expression</span><span class="p">)</span>
</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a> <span class="p">)</span>
</span><span id="L-565"><a href="#L-565"><span class="linenos">565</span></a> <span class="n">parse_with_tz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="L-566"><a href="#L-566"><span class="linenos">566</span></a> <span class="s2">&quot;PARSE_DATETIME&quot;</span><span class="p">,</span>
</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a> <span class="n">formatted_value</span><span class="p">,</span>
</span><span id="L-568"><a href="#L-568"><span class="linenos">568</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_TRIE</span><span class="p">),</span>
</span><span id="L-569"><a href="#L-569"><span class="linenos">569</span></a> <span class="p">)</span>
</span><span id="L-570"><a href="#L-570"><span class="linenos">570</span></a> <span class="n">coalesced</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;COALESCE&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;TRY&quot;</span><span class="p">,</span> <span class="n">parse_without_tz</span><span class="p">),</span> <span class="n">parse_with_tz</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">func</span><span class="p">(</span><span class="s2">&quot;TO_UNIXTIME&quot;</span><span class="p">,</span> <span class="n">coalesced</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="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-574"><a href="#L-574"><span class="linenos">574</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;safe&quot;</span><span class="p">):</span>
</span><span id="L-575"><a href="#L-575"><span class="linenos">575</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-576"><a href="#L-576"><span class="linenos">576</span></a> <span class="s2">&quot;ELEMENT_AT&quot;</span><span class="p">,</span>
</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a> <span class="n">seq_get</span><span class="p">(</span>
</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a> <span class="n">apply_index_offset</span><span class="p">(</span>
</span><span id="L-580"><a href="#L-580"><span class="linenos">580</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="L-581"><a href="#L-581"><span class="linenos">581</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span>
</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a> <span class="mi">1</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;offset&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
</span><span id="L-583"><a href="#L-583"><span class="linenos">583</span></a> <span class="p">),</span>
</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a> <span class="mi">0</span><span class="p">,</span>
</span><span id="L-585"><a href="#L-585"><span class="linenos">585</span></a> <span class="p">),</span>
</span><span id="L-586"><a href="#L-586"><span class="linenos">586</span></a> <span class="p">)</span>
</span><span id="L-587"><a href="#L-587"><span class="linenos">587</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</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="nf">struct_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">Struct</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="L-591"><a href="#L-591"><span class="linenos">591</span></a>
</span><span id="L-592"><a href="#L-592"><span class="linenos">592</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-593"><a href="#L-593"><span class="linenos">593</span></a> <span class="n">values</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-594"><a href="#L-594"><span class="linenos">594</span></a> <span class="n">schema</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-595"><a href="#L-595"><span class="linenos">595</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-596"><a href="#L-596"><span class="linenos">596</span></a>
</span><span id="L-597"><a href="#L-597"><span class="linenos">597</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="L-598"><a href="#L-598"><span class="linenos">598</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</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-599"><a href="#L-599"><span class="linenos">599</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">type</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">UNKNOWN</span><span class="p">):</span>
</span><span id="L-600"><a href="#L-600"><span class="linenos">600</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-601"><a href="#L-601"><span class="linenos">601</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-602"><a href="#L-602"><span class="linenos">602</span></a> <span class="n">schema</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">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="o">.</span><span class="n">type</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-603"><a href="#L-603"><span class="linenos">603</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">))</span>
</span><span id="L-604"><a href="#L-604"><span class="linenos">604</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-605"><a href="#L-605"><span class="linenos">605</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">))</span>
</span><span id="L-606"><a href="#L-606"><span class="linenos">606</span></a>
</span><span id="L-607"><a href="#L-607"><span class="linenos">607</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</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="ow">not</span> <span class="n">size</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">!=</span> <span class="n">size</span><span class="p">:</span>
</span><span id="L-610"><a href="#L-610"><span class="linenos">610</span></a> <span class="k">if</span> <span class="n">unknown_type</span><span class="p">:</span>
</span><span id="L-611"><a href="#L-611"><span class="linenos">611</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="L-612"><a href="#L-612"><span class="linenos">612</span></a> <span class="s2">&quot;Cannot convert untyped key-value definitions (try annotate_types).&quot;</span>
</span><span id="L-613"><a href="#L-613"><span class="linenos">613</span></a> <span class="p">)</span>
</span><span id="L-614"><a href="#L-614"><span class="linenos">614</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;ROW&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">)</span>
</span><span id="L-615"><a href="#L-615"><span class="linenos">615</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;CAST(ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">values</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</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">def</span> <span class="nf">interval_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">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-618"><a href="#L-618"><span class="linenos">618</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;WEEK&quot;</span><span class="p">):</span>
</span><span id="L-619"><a href="#L-619"><span class="linenos">619</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> * INTERVAL &#39;7&#39; DAY)&quot;</span>
</span><span id="L-620"><a href="#L-620"><span class="linenos">620</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-621"><a href="#L-621"><span class="linenos">621</span></a>
</span><span id="L-622"><a href="#L-622"><span class="linenos">622</span></a> <span class="k">def</span> <span class="nf">transaction_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">Transaction</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-623"><a href="#L-623"><span class="linenos">623</span></a> <span class="n">modes</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;modes&quot;</span><span class="p">)</span>
</span><span id="L-624"><a href="#L-624"><span class="linenos">624</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">modes</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">modes</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-625"><a href="#L-625"><span class="linenos">625</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;START TRANSACTION</span><span class="si">{</span><span class="n">modes</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="L-626"><a href="#L-626"><span class="linenos">626</span></a>
</span><span id="L-627"><a href="#L-627"><span class="linenos">627</span></a> <span class="k">def</span> <span class="nf">offset_limit_modifiers</span><span class="p">(</span>
</span><span id="L-628"><a href="#L-628"><span class="linenos">628</span></a> <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="n">fetch</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">limit</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">Fetch</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">]</span>
</span><span id="L-629"><a href="#L-629"><span class="linenos">629</span></a> <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-630"><a href="#L-630"><span class="linenos">630</span></a> <span class="k">return</span> <span class="p">[</span>
</span><span id="L-631"><a href="#L-631"><span class="linenos">631</span></a> <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;offset&quot;</span><span class="p">),</span>
</span><span id="L-632"><a href="#L-632"><span class="linenos">632</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">limit</span><span class="p">),</span>
</span><span id="L-633"><a href="#L-633"><span class="linenos">633</span></a> <span class="p">]</span>
</span><span id="L-634"><a href="#L-634"><span class="linenos">634</span></a>
</span><span id="L-635"><a href="#L-635"><span class="linenos">635</span></a> <span class="k">def</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-636"><a href="#L-636"><span class="linenos">636</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-637"><a href="#L-637"><span class="linenos">637</span></a><span class="sd"> Presto doesn&#39;t support CREATE VIEW with expressions (ex: `CREATE VIEW x (cola)` then `(cola)` is the expression),</span>
</span><span id="L-638"><a href="#L-638"><span class="linenos">638</span></a><span class="sd"> so we need to remove them</span>
</span><span id="L-639"><a href="#L-639"><span class="linenos">639</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-640"><a href="#L-640"><span class="linenos">640</span></a> <span class="n">kind</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;kind&quot;</span><span class="p">]</span>
</span><span id="L-641"><a href="#L-641"><span class="linenos">641</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-642"><a href="#L-642"><span class="linenos">642</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;VIEW&quot;</span> <span class="ow">and</span> <span class="n">schema</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="L-643"><a href="#L-643"><span class="linenos">643</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span><span id="L-644"><a href="#L-644"><span class="linenos">644</span></a> <span class="k">return</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-645"><a href="#L-645"><span class="linenos">645</span></a>
</span><span id="L-646"><a href="#L-646"><span class="linenos">646</span></a> <span class="k">def</span> <span class="nf">delete_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">Delete</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-647"><a href="#L-647"><span class="linenos">647</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-648"><a href="#L-648"><span class="linenos">648</span></a><span class="sd"> Presto only supports DELETE FROM for a single table without an alias, so we need</span>
</span><span id="L-649"><a href="#L-649"><span class="linenos">649</span></a><span class="sd"> to remove the unnecessary parts. If the original DELETE statement contains more</span>
</span><span id="L-650"><a href="#L-650"><span class="linenos">650</span></a><span class="sd"> than one table to be deleted, we can&#39;t safely map it 1-1 to a Presto statement.</span>
</span><span id="L-651"><a href="#L-651"><span class="linenos">651</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-652"><a href="#L-652"><span class="linenos">652</span></a> <span class="n">tables</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;tables&quot;</span><span class="p">)</span> <span class="ow">or</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-653"><a href="#L-653"><span class="linenos">653</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tables</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-654"><a href="#L-654"><span class="linenos">654</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-655"><a href="#L-655"><span class="linenos">655</span></a>
</span><span id="L-656"><a href="#L-656"><span class="linenos">656</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">tables</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-657"><a href="#L-657"><span class="linenos">657</span></a> <span class="n">expression</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">table</span><span class="p">)</span>
</span><span id="L-658"><a href="#L-658"><span class="linenos">658</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;tables&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</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">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</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-661"><a href="#L-661"><span class="linenos">661</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">table</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-662"><a href="#L-662"><span class="linenos">662</span></a> <span class="k">if</span> <span class="n">table_alias</span><span class="p">:</span>
</span><span id="L-663"><a href="#L-663"><span class="linenos">663</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="L-664"><a href="#L-664"><span class="linenos">664</span></a> <span class="n">expression</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">Delete</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">unqualify_columns</span><span class="p">))</span>
</span><span id="L-665"><a href="#L-665"><span class="linenos">665</span></a>
</span><span id="L-666"><a href="#L-666"><span class="linenos">666</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="L-667"><a href="#L-667"><span class="linenos">667</span></a>
</span><span id="L-668"><a href="#L-668"><span class="linenos">668</span></a> <span class="k">def</span> <span class="nf">jsonextract_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">JSONExtract</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-669"><a href="#L-669"><span class="linenos">669</span></a> <span class="n">is_json_extract</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;variant_extract_is_json_extract&quot;</span><span class="p">,</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><span id="L-671"><a href="#L-671"><span class="linenos">671</span></a> <span class="c1"># Generate JSON_EXTRACT unless the user has configured that a Snowflake / Databricks</span>
</span><span id="L-672"><a href="#L-672"><span class="linenos">672</span></a> <span class="c1"># VARIANT extract (e.g. col:x.y) should map to dot notation (i.e ROW access) in Presto/Trino</span>
</span><span id="L-673"><a href="#L-673"><span class="linenos">673</span></a> <span class="k">if</span> <span class="ow">not</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;variant_extract&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">is_json_extract</span><span class="p">:</span>
</span><span id="L-674"><a href="#L-674"><span class="linenos">674</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-675"><a href="#L-675"><span class="linenos">675</span></a> <span class="s2">&quot;JSON_EXTRACT&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">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="L-676"><a href="#L-676"><span class="linenos">676</span></a> <span class="p">)</span>
</span><span id="L-677"><a href="#L-677"><span class="linenos">677</span></a>
</span><span id="L-678"><a href="#L-678"><span class="linenos">678</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-679"><a href="#L-679"><span class="linenos">679</span></a>
</span><span id="L-680"><a href="#L-680"><span class="linenos">680</span></a> <span class="c1"># Convert the JSONPath extraction `JSON_EXTRACT(col, &#39;$.x.y) to a ROW access col.x.y</span>
</span><span id="L-681"><a href="#L-681"><span class="linenos">681</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-682"><a href="#L-682"><span class="linenos">682</span></a> <span class="k">for</span> <span class="n">path_key</span> <span class="ow">in</span> <span class="n">expression</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">1</span><span class="p">:]:</span>
</span><span id="L-683"><a href="#L-683"><span class="linenos">683</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path_key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">):</span>
</span><span id="L-684"><a href="#L-684"><span class="linenos">684</span></a> <span class="c1"># Cannot transpile subscripts, wildcards etc to dot notation</span>
</span><span id="L-685"><a href="#L-685"><span class="linenos">685</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="L-686"><a href="#L-686"><span class="linenos">686</span></a> <span class="sa">f</span><span class="s2">&quot;Cannot transpile JSONPath segment &#39;</span><span class="si">{</span><span class="n">path_key</span><span class="si">}</span><span class="s2">&#39; to ROW access&quot;</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 class="k">continue</span>
</span><span id="L-689"><a href="#L-689"><span class="linenos">689</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">path_key</span><span class="o">.</span><span class="n">this</span>
</span><span id="L-690"><a href="#L-690"><span class="linenos">690</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
</span><span id="L-691"><a href="#L-691"><span class="linenos">691</span></a> <span class="n">key</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">&quot;&#39;</span>
</span><span id="L-692"><a href="#L-692"><span class="linenos">692</span></a> <span class="n">segments</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="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-693"><a href="#L-693"><span class="linenos">693</span></a>
</span><span id="L-694"><a href="#L-694"><span class="linenos">694</span></a> <span class="n">expr</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">segments</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">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="n">expr</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</section>
<section id="DATE_ADD_OR_SUB">
<div class="attr variable">
<span class="name">DATE_ADD_OR_SUB</span> =
<input id="DATE_ADD_OR_SUB-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="DATE_ADD_OR_SUB-view-value"></label><span class="default_value">typing.Union[<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>, <a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>, <a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>]</span>
</div>
<a class="headerlink" href="#DATE_ADD_OR_SUB"></a>
</section>
<section id="Presto">
<input id="Presto-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">Presto</span><wbr>(<span class="base"><a href="dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span>):
<label class="view-source-button" for="Presto-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto-206"><a href="#Presto-206"><span class="linenos">206</span></a><span class="k">class</span> <span class="nc">Presto</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="Presto-207"><a href="#Presto-207"><span class="linenos">207</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span>
</span><span id="Presto-208"><a href="#Presto-208"><span class="linenos">208</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_last&quot;</span>
</span><span id="Presto-209"><a href="#Presto-209"><span class="linenos">209</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="n">MySQL</span><span class="o">.</span><span class="n">TIME_FORMAT</span>
</span><span id="Presto-210"><a href="#Presto-210"><span class="linenos">210</span></a> <span class="n">STRICT_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-211"><a href="#Presto-211"><span class="linenos">211</span></a> <span class="n">SUPPORTS_SEMI_ANTI_JOIN</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-212"><a href="#Presto-212"><span class="linenos">212</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-213"><a href="#Presto-213"><span class="linenos">213</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-214"><a href="#Presto-214"><span class="linenos">214</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="Presto-215"><a href="#Presto-215"><span class="linenos">215</span></a>
</span><span id="Presto-216"><a href="#Presto-216"><span class="linenos">216</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="n">MySQL</span><span class="o">.</span><span class="n">TIME_MAPPING</span>
</span><span id="Presto-217"><a href="#Presto-217"><span class="linenos">217</span></a>
</span><span id="Presto-218"><a href="#Presto-218"><span class="linenos">218</span></a> <span class="c1"># https://github.com/trinodb/trino/issues/17</span>
</span><span id="Presto-219"><a href="#Presto-219"><span class="linenos">219</span></a> <span class="c1"># https://github.com/trinodb/trino/issues/12289</span>
</span><span id="Presto-220"><a href="#Presto-220"><span class="linenos">220</span></a> <span class="c1"># https://github.com/prestodb/presto/issues/2863</span>
</span><span id="Presto-221"><a href="#Presto-221"><span class="linenos">221</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_INSENSITIVE</span>
</span><span id="Presto-222"><a href="#Presto-222"><span class="linenos">222</span></a>
</span><span id="Presto-223"><a href="#Presto-223"><span class="linenos">223</span></a> <span class="c1"># The result of certain math functions in Presto/Trino is of type</span>
</span><span id="Presto-224"><a href="#Presto-224"><span class="linenos">224</span></a> <span class="c1"># equal to the input type e.g: FLOOR(5.5/2) -&gt; DECIMAL, FLOOR(5/2) -&gt; BIGINT</span>
</span><span id="Presto-225"><a href="#Presto-225"><span class="linenos">225</span></a> <span class="n">ANNOTATORS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto-226"><a href="#Presto-226"><span class="linenos">226</span></a> <span class="o">**</span><span class="n">Dialect</span><span class="o">.</span><span class="n">ANNOTATORS</span><span class="p">,</span>
</span><span id="Presto-227"><a href="#Presto-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Floor</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="Presto-228"><a href="#Presto-228"><span class="linenos">228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ceil</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="Presto-229"><a href="#Presto-229"><span class="linenos">229</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">),</span>
</span><span id="Presto-230"><a href="#Presto-230"><span class="linenos">230</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Round</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="Presto-231"><a href="#Presto-231"><span class="linenos">231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sign</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="Presto-232"><a href="#Presto-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Abs</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">),</span>
</span><span id="Presto-233"><a href="#Presto-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</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">_annotate_by_args</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
</span><span id="Presto-234"><a href="#Presto-234"><span class="linenos">234</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto-235"><a href="#Presto-235"><span class="linenos">235</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_type</span><span class="p">(</span><span class="n">e</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">DOUBLE</span><span class="p">),</span>
</span><span id="Presto-236"><a href="#Presto-236"><span class="linenos">236</span></a> <span class="p">}</span>
</span><span id="Presto-237"><a href="#Presto-237"><span class="linenos">237</span></a>
</span><span id="Presto-238"><a href="#Presto-238"><span class="linenos">238</span></a> <span class="k">class</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="Presto-239"><a href="#Presto-239"><span class="linenos">239</span></a> <span class="n">UNICODE_STRINGS</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="Presto-240"><a href="#Presto-240"><span class="linenos">240</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">q</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
</span><span id="Presto-241"><a href="#Presto-241"><span class="linenos">241</span></a> <span class="k">for</span> <span class="n">q</span> <span class="ow">in</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</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="nb">str</span><span class="p">],</span> <span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">QUOTES</span><span class="p">)</span>
</span><span id="Presto-242"><a href="#Presto-242"><span class="linenos">242</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;U&amp;&quot;</span><span class="p">,</span> <span class="s2">&quot;u&amp;&quot;</span><span class="p">)</span>
</span><span id="Presto-243"><a href="#Presto-243"><span class="linenos">243</span></a> <span class="p">]</span>
</span><span id="Presto-244"><a href="#Presto-244"><span class="linenos">244</span></a>
</span><span id="Presto-245"><a href="#Presto-245"><span class="linenos">245</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto-246"><a href="#Presto-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="Presto-247"><a href="#Presto-247"><span class="linenos">247</span></a> <span class="s2">&quot;START&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
</span><span id="Presto-248"><a href="#Presto-248"><span class="linenos">248</span></a> <span class="s2">&quot;MATCH_RECOGNIZE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">,</span>
</span><span id="Presto-249"><a href="#Presto-249"><span class="linenos">249</span></a> <span class="s2">&quot;ROW&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="Presto-250"><a href="#Presto-250"><span class="linenos">250</span></a> <span class="s2">&quot;IPADDRESS&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPADDRESS</span><span class="p">,</span>
</span><span id="Presto-251"><a href="#Presto-251"><span class="linenos">251</span></a> <span class="s2">&quot;IPPREFIX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPPREFIX</span><span class="p">,</span>
</span><span id="Presto-252"><a href="#Presto-252"><span class="linenos">252</span></a> <span class="s2">&quot;TDIGEST&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TDIGEST</span><span class="p">,</span>
</span><span id="Presto-253"><a href="#Presto-253"><span class="linenos">253</span></a> <span class="s2">&quot;HYPERLOGLOG&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HLLSKETCH</span><span class="p">,</span>
</span><span id="Presto-254"><a href="#Presto-254"><span class="linenos">254</span></a> <span class="p">}</span>
</span><span id="Presto-255"><a href="#Presto-255"><span class="linenos">255</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="Presto-256"><a href="#Presto-256"><span class="linenos">256</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;QUALIFY&quot;</span><span class="p">)</span>
</span><span id="Presto-257"><a href="#Presto-257"><span class="linenos">257</span></a>
</span><span id="Presto-258"><a href="#Presto-258"><span class="linenos">258</span></a> <span class="k">class</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="Presto-259"><a href="#Presto-259"><span class="linenos">259</span></a> <span class="n">VALUES_FOLLOWED_BY_PAREN</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-260"><a href="#Presto-260"><span class="linenos">260</span></a>
</span><span id="Presto-261"><a href="#Presto-261"><span class="linenos">261</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto-262"><a href="#Presto-262"><span class="linenos">262</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="Presto-263"><a href="#Presto-263"><span class="linenos">263</span></a> <span class="s2">&quot;ARBITRARY&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="Presto-264"><a href="#Presto-264"><span class="linenos">264</span></a> <span class="s2">&quot;APPROX_DISTINCT&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="Presto-265"><a href="#Presto-265"><span class="linenos">265</span></a> <span class="s2">&quot;APPROX_PERCENTILE&quot;</span><span class="p">:</span> <span class="n">_build_approx_percentile</span><span class="p">,</span>
</span><span id="Presto-266"><a href="#Presto-266"><span class="linenos">266</span></a> <span class="s2">&quot;BITWISE_AND&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</span><span class="p">),</span>
</span><span id="Presto-267"><a href="#Presto-267"><span class="linenos">267</span></a> <span class="s2">&quot;BITWISE_NOT&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">BitwiseNot</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="Presto-268"><a href="#Presto-268"><span class="linenos">268</span></a> <span class="s2">&quot;BITWISE_OR&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</span><span class="p">),</span>
</span><span id="Presto-269"><a href="#Presto-269"><span class="linenos">269</span></a> <span class="s2">&quot;BITWISE_XOR&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">),</span>
</span><span id="Presto-270"><a href="#Presto-270"><span class="linenos">270</span></a> <span class="s2">&quot;CARDINALITY&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-271"><a href="#Presto-271"><span class="linenos">271</span></a> <span class="s2">&quot;CONTAINS&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-272"><a href="#Presto-272"><span class="linenos">272</span></a> <span class="s2">&quot;DATE_ADD&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">DateAdd</span><span class="p">(</span>
</span><span id="Presto-273"><a href="#Presto-273"><span class="linenos">273</span></a> <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">2</span><span class="p">),</span> <span class="n">expression</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">1</span><span class="p">),</span> <span class="n">unit</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="Presto-274"><a href="#Presto-274"><span class="linenos">274</span></a> <span class="p">),</span>
</span><span id="Presto-275"><a href="#Presto-275"><span class="linenos">275</span></a> <span class="s2">&quot;DATE_DIFF&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">DateDiff</span><span class="p">(</span>
</span><span id="Presto-276"><a href="#Presto-276"><span class="linenos">276</span></a> <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">2</span><span class="p">),</span> <span class="n">expression</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">1</span><span class="p">),</span> <span class="n">unit</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="Presto-277"><a href="#Presto-277"><span class="linenos">277</span></a> <span class="p">),</span>
</span><span id="Presto-278"><a href="#Presto-278"><span class="linenos">278</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">:</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;presto&quot;</span><span class="p">),</span>
</span><span id="Presto-279"><a href="#Presto-279"><span class="linenos">279</span></a> <span class="s2">&quot;DATE_PARSE&quot;</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> <span class="s2">&quot;presto&quot;</span><span class="p">),</span>
</span><span id="Presto-280"><a href="#Presto-280"><span class="linenos">280</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="n">date_trunc_to_time</span><span class="p">,</span>
</span><span id="Presto-281"><a href="#Presto-281"><span class="linenos">281</span></a> <span class="s2">&quot;DAY_OF_WEEK&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeekIso</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-282"><a href="#Presto-282"><span class="linenos">282</span></a> <span class="s2">&quot;ELEMENT_AT&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">Bracket</span><span class="p">(</span>
</span><span id="Presto-283"><a href="#Presto-283"><span class="linenos">283</span></a> <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">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)],</span> <span class="n">offset</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span>
</span><span id="Presto-284"><a href="#Presto-284"><span class="linenos">284</span></a> <span class="p">),</span>
</span><span id="Presto-285"><a href="#Presto-285"><span class="linenos">285</span></a> <span class="s2">&quot;FROM_HEX&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unhex</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-286"><a href="#Presto-286"><span class="linenos">286</span></a> <span class="s2">&quot;FROM_UNIXTIME&quot;</span><span class="p">:</span> <span class="n">_build_from_unixtime</span><span class="p">,</span>
</span><span id="Presto-287"><a href="#Presto-287"><span class="linenos">287</span></a> <span class="s2">&quot;FROM_UTF8&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">Decode</span><span class="p">(</span>
</span><span id="Presto-288"><a href="#Presto-288"><span class="linenos">288</span></a> <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">replace</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">1</span><span class="p">),</span> <span class="n">charset</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="s2">&quot;utf-8&quot;</span><span class="p">)</span>
</span><span id="Presto-289"><a href="#Presto-289"><span class="linenos">289</span></a> <span class="p">),</span>
</span><span id="Presto-290"><a href="#Presto-290"><span class="linenos">290</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-291"><a href="#Presto-291"><span class="linenos">291</span></a> <span class="s2">&quot;REGEXP_EXTRACT&quot;</span><span class="p">:</span> <span class="n">build_regexp_extract</span><span class="p">,</span>
</span><span id="Presto-292"><a href="#Presto-292"><span class="linenos">292</span></a> <span class="s2">&quot;REGEXP_REPLACE&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">RegexpReplace</span><span class="p">(</span>
</span><span id="Presto-293"><a href="#Presto-293"><span class="linenos">293</span></a> <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="Presto-294"><a href="#Presto-294"><span class="linenos">294</span></a> <span class="n">expression</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">1</span><span class="p">),</span>
</span><span id="Presto-295"><a href="#Presto-295"><span class="linenos">295</span></a> <span class="n">replacement</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 class="ow">or</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="s2">&quot;&quot;</span><span class="p">),</span>
</span><span id="Presto-296"><a href="#Presto-296"><span class="linenos">296</span></a> <span class="p">),</span>
</span><span id="Presto-297"><a href="#Presto-297"><span class="linenos">297</span></a> <span class="s2">&quot;ROW&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="Presto-298"><a href="#Presto-298"><span class="linenos">298</span></a> <span class="s2">&quot;SEQUENCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-299"><a href="#Presto-299"><span class="linenos">299</span></a> <span class="s2">&quot;SET_AGG&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayUniqueAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-300"><a href="#Presto-300"><span class="linenos">300</span></a> <span class="s2">&quot;SPLIT_TO_MAP&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToMap</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-301"><a href="#Presto-301"><span class="linenos">301</span></a> <span class="s2">&quot;STRPOS&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">StrPosition</span><span class="p">(</span>
</span><span id="Presto-302"><a href="#Presto-302"><span class="linenos">302</span></a> <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">substr</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">1</span><span class="p">),</span> <span class="n">instance</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="Presto-303"><a href="#Presto-303"><span class="linenos">303</span></a> <span class="p">),</span>
</span><span id="Presto-304"><a href="#Presto-304"><span class="linenos">304</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">_build_to_char</span><span class="p">,</span>
</span><span id="Presto-305"><a href="#Presto-305"><span class="linenos">305</span></a> <span class="s2">&quot;TO_UNIXTIME&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto-306"><a href="#Presto-306"><span class="linenos">306</span></a> <span class="s2">&quot;TO_UTF8&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">Encode</span><span class="p">(</span>
</span><span id="Presto-307"><a href="#Presto-307"><span class="linenos">307</span></a> <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">charset</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="s2">&quot;utf-8&quot;</span><span class="p">)</span>
</span><span id="Presto-308"><a href="#Presto-308"><span class="linenos">308</span></a> <span class="p">),</span>
</span><span id="Presto-309"><a href="#Presto-309"><span class="linenos">309</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="Presto-310"><a href="#Presto-310"><span class="linenos">310</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="Presto-311"><a href="#Presto-311"><span class="linenos">311</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="Presto-312"><a href="#Presto-312"><span class="linenos">312</span></a> <span class="p">}</span>
</span><span id="Presto-313"><a href="#Presto-313"><span class="linenos">313</span></a>
</span><span id="Presto-314"><a href="#Presto-314"><span class="linenos">314</span></a> <span class="n">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">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="Presto-315"><a href="#Presto-315"><span class="linenos">315</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;TRIM&quot;</span><span class="p">)</span>
</span><span id="Presto-316"><a href="#Presto-316"><span class="linenos">316</span></a>
</span><span id="Presto-317"><a href="#Presto-317"><span class="linenos">317</span></a> <span class="k">class</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="Presto-318"><a href="#Presto-318"><span class="linenos">318</span></a> <span class="n">INTERVAL_ALLOWS_PLURAL_FORM</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-319"><a href="#Presto-319"><span class="linenos">319</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-320"><a href="#Presto-320"><span class="linenos">320</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-321"><a href="#Presto-321"><span class="linenos">321</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-322"><a href="#Presto-322"><span class="linenos">322</span></a> <span class="n">IS_BOOL_ALLOWED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-323"><a href="#Presto-323"><span class="linenos">323</span></a> <span class="n">TZ_TO_WITH_TIME_ZONE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-324"><a href="#Presto-324"><span class="linenos">324</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-325"><a href="#Presto-325"><span class="linenos">325</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="Presto-326"><a href="#Presto-326"><span class="linenos">326</span></a> <span class="n">LIMIT_ONLY_LITERALS</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-327"><a href="#Presto-327"><span class="linenos">327</span></a> <span class="n">SUPPORTS_SINGLE_ARG_CONCAT</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-328"><a href="#Presto-328"><span class="linenos">328</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-329"><a href="#Presto-329"><span class="linenos">329</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-330"><a href="#Presto-330"><span class="linenos">330</span></a> <span class="n">SUPPORTS_TO_NUMBER</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-331"><a href="#Presto-331"><span class="linenos">331</span></a> <span class="n">HEX_FUNC</span> <span class="o">=</span> <span class="s2">&quot;TO_HEX&quot;</span>
</span><span id="Presto-332"><a href="#Presto-332"><span class="linenos">332</span></a> <span class="n">PARSE_JSON_NAME</span> <span class="o">=</span> <span class="s2">&quot;JSON_PARSE&quot;</span>
</span><span id="Presto-333"><a href="#Presto-333"><span class="linenos">333</span></a> <span class="n">PAD_FILL_PATTERN_IS_REQUIRED</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-334"><a href="#Presto-334"><span class="linenos">334</span></a> <span class="n">EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-335"><a href="#Presto-335"><span class="linenos">335</span></a>
</span><span id="Presto-336"><a href="#Presto-336"><span class="linenos">336</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto-337"><a href="#Presto-337"><span class="linenos">337</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="Presto-338"><a href="#Presto-338"><span class="linenos">338</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</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="Presto-339"><a href="#Presto-339"><span class="linenos">339</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="Presto-340"><a href="#Presto-340"><span class="linenos">340</span></a> <span class="p">}</span>
</span><span id="Presto-341"><a href="#Presto-341"><span class="linenos">341</span></a>
</span><span id="Presto-342"><a href="#Presto-342"><span class="linenos">342</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto-343"><a href="#Presto-343"><span class="linenos">343</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="Presto-344"><a href="#Presto-344"><span class="linenos">344</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;INTEGER&quot;</span><span class="p">,</span>
</span><span id="Presto-345"><a href="#Presto-345"><span class="linenos">345</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;REAL&quot;</span><span class="p">,</span>
</span><span id="Presto-346"><a href="#Presto-346"><span class="linenos">346</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">BINARY</span><span class="p">:</span> <span class="s2">&quot;VARBINARY&quot;</span><span class="p">,</span>
</span><span id="Presto-347"><a href="#Presto-347"><span class="linenos">347</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;VARCHAR&quot;</span><span class="p">,</span>
</span><span id="Presto-348"><a href="#Presto-348"><span class="linenos">348</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">TIMETZ</span><span class="p">:</span> <span class="s2">&quot;TIME&quot;</span><span class="p">,</span>
</span><span id="Presto-349"><a href="#Presto-349"><span class="linenos">349</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto-350"><a href="#Presto-350"><span class="linenos">350</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;ROW&quot;</span><span class="p">,</span>
</span><span id="Presto-351"><a href="#Presto-351"><span class="linenos">351</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto-352"><a href="#Presto-352"><span class="linenos">352</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto-353"><a href="#Presto-353"><span class="linenos">353</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">HLLSKETCH</span><span class="p">:</span> <span class="s2">&quot;HYPERLOGLOG&quot;</span><span class="p">,</span>
</span><span id="Presto-354"><a href="#Presto-354"><span class="linenos">354</span></a> <span class="p">}</span>
</span><span id="Presto-355"><a href="#Presto-355"><span class="linenos">355</span></a>
</span><span id="Presto-356"><a href="#Presto-356"><span class="linenos">356</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto-357"><a href="#Presto-357"><span class="linenos">357</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="Presto-358"><a href="#Presto-358"><span class="linenos">358</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;ARBITRARY&quot;</span><span class="p">),</span>
</span><span id="Presto-359"><a href="#Presto-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxQuantile</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;APPROX_PERCENTILE&quot;</span><span class="p">),</span>
</span><span id="Presto-360"><a href="#Presto-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAX_BY&quot;</span><span class="p">),</span>
</span><span id="Presto-361"><a href="#Presto-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MIN_BY&quot;</span><span class="p">),</span>
</span><span id="Presto-362"><a href="#Presto-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</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;ARRAY[</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">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="Presto-363"><a href="#Presto-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAny</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ANY_MATCH&quot;</span><span class="p">),</span>
</span><span id="Presto-364"><a href="#Presto-364"><span class="linenos">364</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;CONCAT&quot;</span><span class="p">),</span>
</span><span id="Presto-365"><a href="#Presto-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CONTAINS&quot;</span><span class="p">),</span>
</span><span id="Presto-366"><a href="#Presto-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CARDINALITY&quot;</span><span class="p">),</span>
</span><span id="Presto-367"><a href="#Presto-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayToString</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_JOIN&quot;</span><span class="p">),</span>
</span><span id="Presto-368"><a href="#Presto-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayUniqueAgg</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SET_AGG&quot;</span><span class="p">),</span>
</span><span id="Presto-369"><a href="#Presto-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;AT_TIMEZONE&quot;</span><span class="p">),</span>
</span><span id="Presto-370"><a href="#Presto-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</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;BITWISE_AND&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="Presto-371"><a href="#Presto-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</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="Presto-372"><a href="#Presto-372"><span class="linenos">372</span></a> <span class="s2">&quot;BITWISE_ARITHMETIC_SHIFT_LEFT&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><span id="Presto-373"><a href="#Presto-373"><span class="linenos">373</span></a> <span class="p">),</span>
</span><span id="Presto-374"><a href="#Presto-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</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;BITWISE_NOT&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="Presto-375"><a href="#Presto-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</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;BITWISE_OR&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="Presto-376"><a href="#Presto-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</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="Presto-377"><a href="#Presto-377"><span class="linenos">377</span></a> <span class="s2">&quot;BITWISE_ARITHMETIC_SHIFT_RIGHT&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><span id="Presto-378"><a href="#Presto-378"><span class="linenos">378</span></a> <span class="p">),</span>
</span><span id="Presto-379"><a href="#Presto-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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;BITWISE_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><span id="Presto-380"><a href="#Presto-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">epoch_cast_to_ts</span><span class="p">]),</span>
</span><span id="Presto-381"><a href="#Presto-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</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;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto-382"><a href="#Presto-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="Presto-383"><a href="#Presto-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</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="Presto-384"><a href="#Presto-384"><span class="linenos">384</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">unit_to_str</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">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto-385"><a href="#Presto-385"><span class="linenos">385</span></a> <span class="p">),</span>
</span><span id="Presto-386"><a href="#Presto-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
</span><span id="Presto-387"><a href="#Presto-387"><span class="linenos">387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto-388"><a href="#Presto-388"><span class="linenos">388</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(DATE_FORMAT(</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="n">Presto</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
</span><span id="Presto-389"><a href="#Presto-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">,</span> <span class="n">negate_interval</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="Presto-390"><a href="#Presto-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</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">func</span><span class="p">(</span><span class="s1">&#39;DAY_OF_WEEK&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2"> % 7) + 1)&quot;</span><span class="p">,</span>
</span><span id="Presto-391"><a href="#Presto-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeekIso</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAY_OF_WEEK&quot;</span><span class="p">),</span>
</span><span id="Presto-392"><a href="#Presto-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</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">encode_decode_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="s2">&quot;FROM_UTF8&quot;</span><span class="p">),</span>
</span><span id="Presto-393"><a href="#Presto-393"><span class="linenos">393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto-394"><a href="#Presto-394"><span class="linenos">394</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(DATE_PARSE(CAST(</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"> AS VARCHAR), </span><span class="si">{</span><span class="n">Presto</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
</span><span id="Presto-395"><a href="#Presto-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</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">encode_decode_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="s2">&quot;TO_UTF8&quot;</span><span class="p">),</span>
</span><span id="Presto-396"><a href="#Presto-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</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;FORMAT=&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
</span><span id="Presto-397"><a href="#Presto-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">First</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto-398"><a href="#Presto-398"><span class="linenos">398</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FirstValue</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto-399"><a href="#Presto-399"><span class="linenos">399</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FromTimeZone</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto-400"><a href="#Presto-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;WITH_TIMEZONE(</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;zone&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AT TIME ZONE &#39;UTC&#39;&quot;</span><span class="p">,</span>
</span><span id="Presto-401"><a href="#Presto-401"><span class="linenos">401</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">:</span> <span class="n">sequence_sql</span><span class="p">,</span>
</span><span id="Presto-402"><a href="#Presto-402"><span class="linenos">402</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateDateArray</span><span class="p">:</span> <span class="n">sequence_sql</span><span class="p">,</span>
</span><span id="Presto-403"><a href="#Presto-403"><span class="linenos">403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unalias_group</span><span class="p">]),</span>
</span><span id="Presto-404"><a href="#Presto-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</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="Presto-405"><a href="#Presto-405"><span class="linenos">405</span></a> <span class="s2">&quot;ARRAY_JOIN&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;ARRAY_AGG&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;separator&quot;</span><span class="p">)</span>
</span><span id="Presto-406"><a href="#Presto-406"><span class="linenos">406</span></a> <span class="p">),</span>
</span><span id="Presto-407"><a href="#Presto-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">:</span> <span class="n">if_sql</span><span class="p">(),</span>
</span><span id="Presto-408"><a href="#Presto-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">:</span> <span class="n">no_ilike_sql</span><span class="p">,</span>
</span><span id="Presto-409"><a href="#Presto-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Initcap</span><span class="p">:</span> <span class="n">_initcap_sql</span><span class="p">,</span>
</span><span id="Presto-410"><a href="#Presto-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</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">jsonextract_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
</span><span id="Presto-411"><a href="#Presto-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Last</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto-412"><a href="#Presto-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastValue</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto-413"><a href="#Presto-413"><span class="linenos">413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</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;LAST_DAY_OF_MONTH&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="Presto-414"><a href="#Presto-414"><span class="linenos">414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="n">_explode_to_unnest_sql</span><span class="p">,</span>
</span><span id="Presto-415"><a href="#Presto-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">:</span> <span class="n">left_to_substring_sql</span><span class="p">,</span>
</span><span id="Presto-416"><a href="#Presto-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LEVENSHTEIN_DISTANCE&quot;</span><span class="p">),</span>
</span><span id="Presto-417"><a href="#Presto-417"><span class="linenos">417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
</span><span id="Presto-418"><a href="#Presto-418"><span class="linenos">418</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
</span><span id="Presto-419"><a href="#Presto-419"><span class="linenos">419</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="Presto-420"><a href="#Presto-420"><span class="linenos">420</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="Presto-421"><a href="#Presto-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
</span><span id="Presto-422"><a href="#Presto-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Right</span><span class="p">:</span> <span class="n">right_to_substring_sql</span><span class="p">,</span>
</span><span id="Presto-423"><a href="#Presto-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
</span><span id="Presto-424"><a href="#Presto-424"><span class="linenos">424</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">:</span> <span class="n">_schema_sql</span><span class="p">,</span>
</span><span id="Presto-425"><a href="#Presto-425"><span class="linenos">425</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="Presto-426"><a href="#Presto-426"><span class="linenos">426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span>
</span><span id="Presto-427"><a href="#Presto-427"><span class="linenos">427</span></a> <span class="p">[</span>
</span><span id="Presto-428"><a href="#Presto-428"><span class="linenos">428</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span>
</span><span id="Presto-429"><a href="#Presto-429"><span class="linenos">429</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_distinct_on</span><span class="p">,</span>
</span><span id="Presto-430"><a href="#Presto-430"><span class="linenos">430</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">explode_to_unnest</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
</span><span id="Presto-431"><a href="#Presto-431"><span class="linenos">431</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span>
</span><span id="Presto-432"><a href="#Presto-432"><span class="linenos">432</span></a> <span class="p">]</span>
</span><span id="Presto-433"><a href="#Presto-433"><span class="linenos">433</span></a> <span class="p">),</span>
</span><span id="Presto-434"><a href="#Presto-434"><span class="linenos">434</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_no_sort_array</span><span class="p">,</span>
</span><span id="Presto-435"><a href="#Presto-435"><span class="linenos">435</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">str_position_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">generate_instance</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="Presto-436"><a href="#Presto-436"><span class="linenos">436</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</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;CAST(</span><span class="si">{</span><span class="n">_str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
</span><span id="Presto-437"><a href="#Presto-437"><span class="linenos">437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToMap</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SPLIT_TO_MAP&quot;</span><span class="p">),</span>
</span><span id="Presto-438"><a href="#Presto-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">_str_to_time_sql</span><span class="p">,</span>
</span><span id="Presto-439"><a href="#Presto-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span>
</span><span id="Presto-440"><a href="#Presto-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unnest_generate_series</span><span class="p">]),</span>
</span><span id="Presto-441"><a href="#Presto-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
</span><span id="Presto-442"><a href="#Presto-442"><span class="linenos">442</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="Presto-443"><a href="#Presto-443"><span class="linenos">443</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><span id="Presto-444"><a href="#Presto-444"><span class="linenos">444</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
</span><span id="Presto-445"><a href="#Presto-445"><span class="linenos">445</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="Presto-446"><a href="#Presto-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</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="Presto-447"><a href="#Presto-447"><span class="linenos">447</span></a> <span class="s2">&quot;TO_UNIXTIME&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;DATE_PARSE&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">Presto</span><span class="o">.</span><span class="n">TIME_FORMAT</span><span class="p">)</span>
</span><span id="Presto-448"><a href="#Presto-448"><span class="linenos">448</span></a> <span class="p">),</span>
</span><span id="Presto-449"><a href="#Presto-449"><span class="linenos">449</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 class="s2">&quot;DATE_FORMAT&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><span id="Presto-450"><a href="#Presto-450"><span class="linenos">450</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;TO_UNIXTIME&quot;</span><span class="p">),</span>
</span><span id="Presto-451"><a href="#Presto-451"><span class="linenos">451</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</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;DATE_FORMAT&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><span id="Presto-452"><a href="#Presto-452"><span class="linenos">452</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">epoch_cast_to_ts</span><span class="p">]),</span>
</span><span id="Presto-453"><a href="#Presto-453"><span class="linenos">453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto-454"><a href="#Presto-454"><span class="linenos">454</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</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"> AS VARCHAR), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
</span><span id="Presto-455"><a href="#Presto-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
</span><span id="Presto-456"><a href="#Presto-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_ts_or_ds_diff_sql</span><span class="p">,</span>
</span><span id="Presto-457"><a href="#Presto-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">:</span> <span class="n">_ts_or_ds_to_date_sql</span><span class="p">,</span>
</span><span id="Presto-458"><a href="#Presto-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Unhex</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;FROM_HEX&quot;</span><span class="p">),</span>
</span><span id="Presto-459"><a href="#Presto-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto-460"><a href="#Presto-460"><span class="linenos">460</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;DATE_FORMAT(FROM_UNIXTIME(</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">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
</span><span id="Presto-461"><a href="#Presto-461"><span class="linenos">461</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="Presto-462"><a href="#Presto-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto-463"><a href="#Presto-463"><span class="linenos">463</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(FROM_UNIXTIME(</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">) AS VARCHAR)&quot;</span><span class="p">,</span>
</span><span id="Presto-464"><a href="#Presto-464"><span class="linenos">464</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
</span><span id="Presto-465"><a href="#Presto-465"><span class="linenos">465</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_recursive_cte_column_names</span><span class="p">]),</span>
</span><span id="Presto-466"><a href="#Presto-466"><span class="linenos">466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span>
</span><span id="Presto-467"><a href="#Presto-467"><span class="linenos">467</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">remove_within_group_for_percentiles</span><span class="p">]</span>
</span><span id="Presto-468"><a href="#Presto-468"><span class="linenos">468</span></a> <span class="p">),</span>
</span><span id="Presto-469"><a href="#Presto-469"><span class="linenos">469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
</span><span id="Presto-470"><a href="#Presto-470"><span class="linenos">470</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="Presto-471"><a href="#Presto-471"><span class="linenos">471</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="Presto-472"><a href="#Presto-472"><span class="linenos">472</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="Presto-473"><a href="#Presto-473"><span class="linenos">473</span></a> <span class="p">}</span>
</span><span id="Presto-474"><a href="#Presto-474"><span class="linenos">474</span></a>
</span><span id="Presto-475"><a href="#Presto-475"><span class="linenos">475</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto-476"><a href="#Presto-476"><span class="linenos">476</span></a> <span class="s2">&quot;alter&quot;</span><span class="p">,</span>
</span><span id="Presto-477"><a href="#Presto-477"><span class="linenos">477</span></a> <span class="s2">&quot;and&quot;</span><span class="p">,</span>
</span><span id="Presto-478"><a href="#Presto-478"><span class="linenos">478</span></a> <span class="s2">&quot;as&quot;</span><span class="p">,</span>
</span><span id="Presto-479"><a href="#Presto-479"><span class="linenos">479</span></a> <span class="s2">&quot;between&quot;</span><span class="p">,</span>
</span><span id="Presto-480"><a href="#Presto-480"><span class="linenos">480</span></a> <span class="s2">&quot;by&quot;</span><span class="p">,</span>
</span><span id="Presto-481"><a href="#Presto-481"><span class="linenos">481</span></a> <span class="s2">&quot;case&quot;</span><span class="p">,</span>
</span><span id="Presto-482"><a href="#Presto-482"><span class="linenos">482</span></a> <span class="s2">&quot;cast&quot;</span><span class="p">,</span>
</span><span id="Presto-483"><a href="#Presto-483"><span class="linenos">483</span></a> <span class="s2">&quot;constraint&quot;</span><span class="p">,</span>
</span><span id="Presto-484"><a href="#Presto-484"><span class="linenos">484</span></a> <span class="s2">&quot;create&quot;</span><span class="p">,</span>
</span><span id="Presto-485"><a href="#Presto-485"><span class="linenos">485</span></a> <span class="s2">&quot;cross&quot;</span><span class="p">,</span>
</span><span id="Presto-486"><a href="#Presto-486"><span class="linenos">486</span></a> <span class="s2">&quot;current_time&quot;</span><span class="p">,</span>
</span><span id="Presto-487"><a href="#Presto-487"><span class="linenos">487</span></a> <span class="s2">&quot;current_timestamp&quot;</span><span class="p">,</span>
</span><span id="Presto-488"><a href="#Presto-488"><span class="linenos">488</span></a> <span class="s2">&quot;deallocate&quot;</span><span class="p">,</span>
</span><span id="Presto-489"><a href="#Presto-489"><span class="linenos">489</span></a> <span class="s2">&quot;delete&quot;</span><span class="p">,</span>
</span><span id="Presto-490"><a href="#Presto-490"><span class="linenos">490</span></a> <span class="s2">&quot;describe&quot;</span><span class="p">,</span>
</span><span id="Presto-491"><a href="#Presto-491"><span class="linenos">491</span></a> <span class="s2">&quot;distinct&quot;</span><span class="p">,</span>
</span><span id="Presto-492"><a href="#Presto-492"><span class="linenos">492</span></a> <span class="s2">&quot;drop&quot;</span><span class="p">,</span>
</span><span id="Presto-493"><a href="#Presto-493"><span class="linenos">493</span></a> <span class="s2">&quot;else&quot;</span><span class="p">,</span>
</span><span id="Presto-494"><a href="#Presto-494"><span class="linenos">494</span></a> <span class="s2">&quot;end&quot;</span><span class="p">,</span>
</span><span id="Presto-495"><a href="#Presto-495"><span class="linenos">495</span></a> <span class="s2">&quot;escape&quot;</span><span class="p">,</span>
</span><span id="Presto-496"><a href="#Presto-496"><span class="linenos">496</span></a> <span class="s2">&quot;except&quot;</span><span class="p">,</span>
</span><span id="Presto-497"><a href="#Presto-497"><span class="linenos">497</span></a> <span class="s2">&quot;execute&quot;</span><span class="p">,</span>
</span><span id="Presto-498"><a href="#Presto-498"><span class="linenos">498</span></a> <span class="s2">&quot;exists&quot;</span><span class="p">,</span>
</span><span id="Presto-499"><a href="#Presto-499"><span class="linenos">499</span></a> <span class="s2">&quot;extract&quot;</span><span class="p">,</span>
</span><span id="Presto-500"><a href="#Presto-500"><span class="linenos">500</span></a> <span class="s2">&quot;false&quot;</span><span class="p">,</span>
</span><span id="Presto-501"><a href="#Presto-501"><span class="linenos">501</span></a> <span class="s2">&quot;for&quot;</span><span class="p">,</span>
</span><span id="Presto-502"><a href="#Presto-502"><span class="linenos">502</span></a> <span class="s2">&quot;from&quot;</span><span class="p">,</span>
</span><span id="Presto-503"><a href="#Presto-503"><span class="linenos">503</span></a> <span class="s2">&quot;full&quot;</span><span class="p">,</span>
</span><span id="Presto-504"><a href="#Presto-504"><span class="linenos">504</span></a> <span class="s2">&quot;group&quot;</span><span class="p">,</span>
</span><span id="Presto-505"><a href="#Presto-505"><span class="linenos">505</span></a> <span class="s2">&quot;having&quot;</span><span class="p">,</span>
</span><span id="Presto-506"><a href="#Presto-506"><span class="linenos">506</span></a> <span class="s2">&quot;in&quot;</span><span class="p">,</span>
</span><span id="Presto-507"><a href="#Presto-507"><span class="linenos">507</span></a> <span class="s2">&quot;inner&quot;</span><span class="p">,</span>
</span><span id="Presto-508"><a href="#Presto-508"><span class="linenos">508</span></a> <span class="s2">&quot;insert&quot;</span><span class="p">,</span>
</span><span id="Presto-509"><a href="#Presto-509"><span class="linenos">509</span></a> <span class="s2">&quot;intersect&quot;</span><span class="p">,</span>
</span><span id="Presto-510"><a href="#Presto-510"><span class="linenos">510</span></a> <span class="s2">&quot;into&quot;</span><span class="p">,</span>
</span><span id="Presto-511"><a href="#Presto-511"><span class="linenos">511</span></a> <span class="s2">&quot;is&quot;</span><span class="p">,</span>
</span><span id="Presto-512"><a href="#Presto-512"><span class="linenos">512</span></a> <span class="s2">&quot;join&quot;</span><span class="p">,</span>
</span><span id="Presto-513"><a href="#Presto-513"><span class="linenos">513</span></a> <span class="s2">&quot;left&quot;</span><span class="p">,</span>
</span><span id="Presto-514"><a href="#Presto-514"><span class="linenos">514</span></a> <span class="s2">&quot;like&quot;</span><span class="p">,</span>
</span><span id="Presto-515"><a href="#Presto-515"><span class="linenos">515</span></a> <span class="s2">&quot;natural&quot;</span><span class="p">,</span>
</span><span id="Presto-516"><a href="#Presto-516"><span class="linenos">516</span></a> <span class="s2">&quot;not&quot;</span><span class="p">,</span>
</span><span id="Presto-517"><a href="#Presto-517"><span class="linenos">517</span></a> <span class="s2">&quot;null&quot;</span><span class="p">,</span>
</span><span id="Presto-518"><a href="#Presto-518"><span class="linenos">518</span></a> <span class="s2">&quot;on&quot;</span><span class="p">,</span>
</span><span id="Presto-519"><a href="#Presto-519"><span class="linenos">519</span></a> <span class="s2">&quot;or&quot;</span><span class="p">,</span>
</span><span id="Presto-520"><a href="#Presto-520"><span class="linenos">520</span></a> <span class="s2">&quot;order&quot;</span><span class="p">,</span>
</span><span id="Presto-521"><a href="#Presto-521"><span class="linenos">521</span></a> <span class="s2">&quot;outer&quot;</span><span class="p">,</span>
</span><span id="Presto-522"><a href="#Presto-522"><span class="linenos">522</span></a> <span class="s2">&quot;prepare&quot;</span><span class="p">,</span>
</span><span id="Presto-523"><a href="#Presto-523"><span class="linenos">523</span></a> <span class="s2">&quot;right&quot;</span><span class="p">,</span>
</span><span id="Presto-524"><a href="#Presto-524"><span class="linenos">524</span></a> <span class="s2">&quot;select&quot;</span><span class="p">,</span>
</span><span id="Presto-525"><a href="#Presto-525"><span class="linenos">525</span></a> <span class="s2">&quot;table&quot;</span><span class="p">,</span>
</span><span id="Presto-526"><a href="#Presto-526"><span class="linenos">526</span></a> <span class="s2">&quot;then&quot;</span><span class="p">,</span>
</span><span id="Presto-527"><a href="#Presto-527"><span class="linenos">527</span></a> <span class="s2">&quot;true&quot;</span><span class="p">,</span>
</span><span id="Presto-528"><a href="#Presto-528"><span class="linenos">528</span></a> <span class="s2">&quot;union&quot;</span><span class="p">,</span>
</span><span id="Presto-529"><a href="#Presto-529"><span class="linenos">529</span></a> <span class="s2">&quot;using&quot;</span><span class="p">,</span>
</span><span id="Presto-530"><a href="#Presto-530"><span class="linenos">530</span></a> <span class="s2">&quot;values&quot;</span><span class="p">,</span>
</span><span id="Presto-531"><a href="#Presto-531"><span class="linenos">531</span></a> <span class="s2">&quot;when&quot;</span><span class="p">,</span>
</span><span id="Presto-532"><a href="#Presto-532"><span class="linenos">532</span></a> <span class="s2">&quot;where&quot;</span><span class="p">,</span>
</span><span id="Presto-533"><a href="#Presto-533"><span class="linenos">533</span></a> <span class="s2">&quot;with&quot;</span><span class="p">,</span>
</span><span id="Presto-534"><a href="#Presto-534"><span class="linenos">534</span></a> <span class="p">}</span>
</span><span id="Presto-535"><a href="#Presto-535"><span class="linenos">535</span></a>
</span><span id="Presto-536"><a href="#Presto-536"><span class="linenos">536</span></a> <span class="k">def</span> <span class="nf">md5_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">MD5</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-537"><a href="#Presto-537"><span class="linenos">537</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="Presto-538"><a href="#Presto-538"><span class="linenos">538</span></a>
</span><span id="Presto-539"><a href="#Presto-539"><span class="linenos">539</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
</span><span id="Presto-540"><a href="#Presto-540"><span class="linenos">540</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="Presto-541"><a href="#Presto-541"><span class="linenos">541</span></a>
</span><span id="Presto-542"><a href="#Presto-542"><span class="linenos">542</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="Presto-543"><a href="#Presto-543"><span class="linenos">543</span></a>
</span><span id="Presto-544"><a href="#Presto-544"><span class="linenos">544</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</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">TEXT_TYPES</span><span class="p">):</span>
</span><span id="Presto-545"><a href="#Presto-545"><span class="linenos">545</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</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">charset</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="s2">&quot;utf-8&quot;</span><span class="p">))</span>
</span><span id="Presto-546"><a href="#Presto-546"><span class="linenos">546</span></a>
</span><span id="Presto-547"><a href="#Presto-547"><span class="linenos">547</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;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;TO_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="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="Presto-548"><a href="#Presto-548"><span class="linenos">548</span></a>
</span><span id="Presto-549"><a href="#Presto-549"><span class="linenos">549</span></a> <span class="k">def</span> <span class="nf">strtounix_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">StrToUnix</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-550"><a href="#Presto-550"><span class="linenos">550</span></a> <span class="c1"># Since `TO_UNIXTIME` requires a `TIMESTAMP`, we need to parse the argument into one.</span>
</span><span id="Presto-551"><a href="#Presto-551"><span class="linenos">551</span></a> <span class="c1"># To do this, we first try to `DATE_PARSE` it, but since this can fail when there&#39;s a</span>
</span><span id="Presto-552"><a href="#Presto-552"><span class="linenos">552</span></a> <span class="c1"># timezone involved, we wrap it in a `TRY` call and use `PARSE_DATETIME` as a fallback,</span>
</span><span id="Presto-553"><a href="#Presto-553"><span class="linenos">553</span></a> <span class="c1"># which seems to be using the same time mapping as Hive, as per:</span>
</span><span id="Presto-554"><a href="#Presto-554"><span class="linenos">554</span></a> <span class="c1"># https://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html</span>
</span><span id="Presto-555"><a href="#Presto-555"><span class="linenos">555</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="Presto-556"><a href="#Presto-556"><span class="linenos">556</span></a> <span class="n">value_as_text</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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><span id="Presto-557"><a href="#Presto-557"><span class="linenos">557</span></a> <span class="n">value_as_timestamp</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="Presto-558"><a href="#Presto-558"><span class="linenos">558</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="Presto-559"><a href="#Presto-559"><span class="linenos">559</span></a> <span class="p">)</span>
</span><span id="Presto-560"><a href="#Presto-560"><span class="linenos">560</span></a>
</span><span id="Presto-561"><a href="#Presto-561"><span class="linenos">561</span></a> <span class="n">parse_without_tz</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;DATE_PARSE&quot;</span><span class="p">,</span> <span class="n">value_as_text</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">expression</span><span class="p">))</span>
</span><span id="Presto-562"><a href="#Presto-562"><span class="linenos">562</span></a>
</span><span id="Presto-563"><a href="#Presto-563"><span class="linenos">563</span></a> <span class="n">formatted_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="Presto-564"><a href="#Presto-564"><span class="linenos">564</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">,</span> <span class="n">value_as_timestamp</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">expression</span><span class="p">)</span>
</span><span id="Presto-565"><a href="#Presto-565"><span class="linenos">565</span></a> <span class="p">)</span>
</span><span id="Presto-566"><a href="#Presto-566"><span class="linenos">566</span></a> <span class="n">parse_with_tz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="Presto-567"><a href="#Presto-567"><span class="linenos">567</span></a> <span class="s2">&quot;PARSE_DATETIME&quot;</span><span class="p">,</span>
</span><span id="Presto-568"><a href="#Presto-568"><span class="linenos">568</span></a> <span class="n">formatted_value</span><span class="p">,</span>
</span><span id="Presto-569"><a href="#Presto-569"><span class="linenos">569</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_TRIE</span><span class="p">),</span>
</span><span id="Presto-570"><a href="#Presto-570"><span class="linenos">570</span></a> <span class="p">)</span>
</span><span id="Presto-571"><a href="#Presto-571"><span class="linenos">571</span></a> <span class="n">coalesced</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;COALESCE&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;TRY&quot;</span><span class="p">,</span> <span class="n">parse_without_tz</span><span class="p">),</span> <span class="n">parse_with_tz</span><span class="p">)</span>
</span><span id="Presto-572"><a href="#Presto-572"><span class="linenos">572</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;TO_UNIXTIME&quot;</span><span class="p">,</span> <span class="n">coalesced</span><span class="p">)</span>
</span><span id="Presto-573"><a href="#Presto-573"><span class="linenos">573</span></a>
</span><span id="Presto-574"><a href="#Presto-574"><span class="linenos">574</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-575"><a href="#Presto-575"><span class="linenos">575</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;safe&quot;</span><span class="p">):</span>
</span><span id="Presto-576"><a href="#Presto-576"><span class="linenos">576</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="Presto-577"><a href="#Presto-577"><span class="linenos">577</span></a> <span class="s2">&quot;ELEMENT_AT&quot;</span><span class="p">,</span>
</span><span id="Presto-578"><a href="#Presto-578"><span class="linenos">578</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="Presto-579"><a href="#Presto-579"><span class="linenos">579</span></a> <span class="n">seq_get</span><span class="p">(</span>
</span><span id="Presto-580"><a href="#Presto-580"><span class="linenos">580</span></a> <span class="n">apply_index_offset</span><span class="p">(</span>
</span><span id="Presto-581"><a href="#Presto-581"><span class="linenos">581</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="Presto-582"><a href="#Presto-582"><span class="linenos">582</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span>
</span><span id="Presto-583"><a href="#Presto-583"><span class="linenos">583</span></a> <span class="mi">1</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;offset&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
</span><span id="Presto-584"><a href="#Presto-584"><span class="linenos">584</span></a> <span class="p">),</span>
</span><span id="Presto-585"><a href="#Presto-585"><span class="linenos">585</span></a> <span class="mi">0</span><span class="p">,</span>
</span><span id="Presto-586"><a href="#Presto-586"><span class="linenos">586</span></a> <span class="p">),</span>
</span><span id="Presto-587"><a href="#Presto-587"><span class="linenos">587</span></a> <span class="p">)</span>
</span><span id="Presto-588"><a href="#Presto-588"><span class="linenos">588</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto-589"><a href="#Presto-589"><span class="linenos">589</span></a>
</span><span id="Presto-590"><a href="#Presto-590"><span class="linenos">590</span></a> <span class="k">def</span> <span class="nf">struct_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">Struct</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-591"><a href="#Presto-591"><span class="linenos">591</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="Presto-592"><a href="#Presto-592"><span class="linenos">592</span></a>
</span><span id="Presto-593"><a href="#Presto-593"><span class="linenos">593</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto-594"><a href="#Presto-594"><span class="linenos">594</span></a> <span class="n">values</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto-595"><a href="#Presto-595"><span class="linenos">595</span></a> <span class="n">schema</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto-596"><a href="#Presto-596"><span class="linenos">596</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto-597"><a href="#Presto-597"><span class="linenos">597</span></a>
</span><span id="Presto-598"><a href="#Presto-598"><span class="linenos">598</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="Presto-599"><a href="#Presto-599"><span class="linenos">599</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</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="Presto-600"><a href="#Presto-600"><span class="linenos">600</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">type</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">UNKNOWN</span><span class="p">):</span>
</span><span id="Presto-601"><a href="#Presto-601"><span class="linenos">601</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto-602"><a href="#Presto-602"><span class="linenos">602</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Presto-603"><a href="#Presto-603"><span class="linenos">603</span></a> <span class="n">schema</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">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="o">.</span><span class="n">type</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Presto-604"><a href="#Presto-604"><span class="linenos">604</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">))</span>
</span><span id="Presto-605"><a href="#Presto-605"><span class="linenos">605</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Presto-606"><a href="#Presto-606"><span class="linenos">606</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">))</span>
</span><span id="Presto-607"><a href="#Presto-607"><span class="linenos">607</span></a>
</span><span id="Presto-608"><a href="#Presto-608"><span class="linenos">608</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
</span><span id="Presto-609"><a href="#Presto-609"><span class="linenos">609</span></a>
</span><span id="Presto-610"><a href="#Presto-610"><span class="linenos">610</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">size</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">!=</span> <span class="n">size</span><span class="p">:</span>
</span><span id="Presto-611"><a href="#Presto-611"><span class="linenos">611</span></a> <span class="k">if</span> <span class="n">unknown_type</span><span class="p">:</span>
</span><span id="Presto-612"><a href="#Presto-612"><span class="linenos">612</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="Presto-613"><a href="#Presto-613"><span class="linenos">613</span></a> <span class="s2">&quot;Cannot convert untyped key-value definitions (try annotate_types).&quot;</span>
</span><span id="Presto-614"><a href="#Presto-614"><span class="linenos">614</span></a> <span class="p">)</span>
</span><span id="Presto-615"><a href="#Presto-615"><span class="linenos">615</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;ROW&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">)</span>
</span><span id="Presto-616"><a href="#Presto-616"><span class="linenos">616</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;CAST(ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">values</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span>
</span><span id="Presto-617"><a href="#Presto-617"><span class="linenos">617</span></a>
</span><span id="Presto-618"><a href="#Presto-618"><span class="linenos">618</span></a> <span class="k">def</span> <span class="nf">interval_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">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-619"><a href="#Presto-619"><span class="linenos">619</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;WEEK&quot;</span><span class="p">):</span>
</span><span id="Presto-620"><a href="#Presto-620"><span class="linenos">620</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> * INTERVAL &#39;7&#39; DAY)&quot;</span>
</span><span id="Presto-621"><a href="#Presto-621"><span class="linenos">621</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto-622"><a href="#Presto-622"><span class="linenos">622</span></a>
</span><span id="Presto-623"><a href="#Presto-623"><span class="linenos">623</span></a> <span class="k">def</span> <span class="nf">transaction_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">Transaction</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-624"><a href="#Presto-624"><span class="linenos">624</span></a> <span class="n">modes</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;modes&quot;</span><span class="p">)</span>
</span><span id="Presto-625"><a href="#Presto-625"><span class="linenos">625</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">modes</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">modes</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="Presto-626"><a href="#Presto-626"><span class="linenos">626</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;START TRANSACTION</span><span class="si">{</span><span class="n">modes</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="Presto-627"><a href="#Presto-627"><span class="linenos">627</span></a>
</span><span id="Presto-628"><a href="#Presto-628"><span class="linenos">628</span></a> <span class="k">def</span> <span class="nf">offset_limit_modifiers</span><span class="p">(</span>
</span><span id="Presto-629"><a href="#Presto-629"><span class="linenos">629</span></a> <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="n">fetch</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">limit</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">Fetch</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">]</span>
</span><span id="Presto-630"><a href="#Presto-630"><span class="linenos">630</span></a> <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="Presto-631"><a href="#Presto-631"><span class="linenos">631</span></a> <span class="k">return</span> <span class="p">[</span>
</span><span id="Presto-632"><a href="#Presto-632"><span class="linenos">632</span></a> <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;offset&quot;</span><span class="p">),</span>
</span><span id="Presto-633"><a href="#Presto-633"><span class="linenos">633</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">limit</span><span class="p">),</span>
</span><span id="Presto-634"><a href="#Presto-634"><span class="linenos">634</span></a> <span class="p">]</span>
</span><span id="Presto-635"><a href="#Presto-635"><span class="linenos">635</span></a>
</span><span id="Presto-636"><a href="#Presto-636"><span class="linenos">636</span></a> <span class="k">def</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="Presto-637"><a href="#Presto-637"><span class="linenos">637</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="Presto-638"><a href="#Presto-638"><span class="linenos">638</span></a><span class="sd"> Presto doesn&#39;t support CREATE VIEW with expressions (ex: `CREATE VIEW x (cola)` then `(cola)` is the expression),</span>
</span><span id="Presto-639"><a href="#Presto-639"><span class="linenos">639</span></a><span class="sd"> so we need to remove them</span>
</span><span id="Presto-640"><a href="#Presto-640"><span class="linenos">640</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Presto-641"><a href="#Presto-641"><span class="linenos">641</span></a> <span class="n">kind</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;kind&quot;</span><span class="p">]</span>
</span><span id="Presto-642"><a href="#Presto-642"><span class="linenos">642</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto-643"><a href="#Presto-643"><span class="linenos">643</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;VIEW&quot;</span> <span class="ow">and</span> <span class="n">schema</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="Presto-644"><a href="#Presto-644"><span class="linenos">644</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span><span id="Presto-645"><a href="#Presto-645"><span class="linenos">645</span></a> <span class="k">return</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="Presto-646"><a href="#Presto-646"><span class="linenos">646</span></a>
</span><span id="Presto-647"><a href="#Presto-647"><span class="linenos">647</span></a> <span class="k">def</span> <span class="nf">delete_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">Delete</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-648"><a href="#Presto-648"><span class="linenos">648</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="Presto-649"><a href="#Presto-649"><span class="linenos">649</span></a><span class="sd"> Presto only supports DELETE FROM for a single table without an alias, so we need</span>
</span><span id="Presto-650"><a href="#Presto-650"><span class="linenos">650</span></a><span class="sd"> to remove the unnecessary parts. If the original DELETE statement contains more</span>
</span><span id="Presto-651"><a href="#Presto-651"><span class="linenos">651</span></a><span class="sd"> than one table to be deleted, we can&#39;t safely map it 1-1 to a Presto statement.</span>
</span><span id="Presto-652"><a href="#Presto-652"><span class="linenos">652</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Presto-653"><a href="#Presto-653"><span class="linenos">653</span></a> <span class="n">tables</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;tables&quot;</span><span class="p">)</span> <span class="ow">or</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="Presto-654"><a href="#Presto-654"><span class="linenos">654</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tables</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Presto-655"><a href="#Presto-655"><span class="linenos">655</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto-656"><a href="#Presto-656"><span class="linenos">656</span></a>
</span><span id="Presto-657"><a href="#Presto-657"><span class="linenos">657</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">tables</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Presto-658"><a href="#Presto-658"><span class="linenos">658</span></a> <span class="n">expression</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">table</span><span class="p">)</span>
</span><span id="Presto-659"><a href="#Presto-659"><span class="linenos">659</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;tables&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span><span id="Presto-660"><a href="#Presto-660"><span class="linenos">660</span></a>
</span><span id="Presto-661"><a href="#Presto-661"><span class="linenos">661</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</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="Presto-662"><a href="#Presto-662"><span class="linenos">662</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">table</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="Presto-663"><a href="#Presto-663"><span class="linenos">663</span></a> <span class="k">if</span> <span class="n">table_alias</span><span class="p">:</span>
</span><span id="Presto-664"><a href="#Presto-664"><span class="linenos">664</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="Presto-665"><a href="#Presto-665"><span class="linenos">665</span></a> <span class="n">expression</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">Delete</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">unqualify_columns</span><span class="p">))</span>
</span><span id="Presto-666"><a href="#Presto-666"><span class="linenos">666</span></a>
</span><span id="Presto-667"><a href="#Presto-667"><span class="linenos">667</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto-668"><a href="#Presto-668"><span class="linenos">668</span></a>
</span><span id="Presto-669"><a href="#Presto-669"><span class="linenos">669</span></a> <span class="k">def</span> <span class="nf">jsonextract_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">JSONExtract</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto-670"><a href="#Presto-670"><span class="linenos">670</span></a> <span class="n">is_json_extract</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;variant_extract_is_json_extract&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
</span><span id="Presto-671"><a href="#Presto-671"><span class="linenos">671</span></a>
</span><span id="Presto-672"><a href="#Presto-672"><span class="linenos">672</span></a> <span class="c1"># Generate JSON_EXTRACT unless the user has configured that a Snowflake / Databricks</span>
</span><span id="Presto-673"><a href="#Presto-673"><span class="linenos">673</span></a> <span class="c1"># VARIANT extract (e.g. col:x.y) should map to dot notation (i.e ROW access) in Presto/Trino</span>
</span><span id="Presto-674"><a href="#Presto-674"><span class="linenos">674</span></a> <span class="k">if</span> <span class="ow">not</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;variant_extract&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">is_json_extract</span><span class="p">:</span>
</span><span id="Presto-675"><a href="#Presto-675"><span class="linenos">675</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="Presto-676"><a href="#Presto-676"><span class="linenos">676</span></a> <span class="s2">&quot;JSON_EXTRACT&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">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="Presto-677"><a href="#Presto-677"><span class="linenos">677</span></a> <span class="p">)</span>
</span><span id="Presto-678"><a href="#Presto-678"><span class="linenos">678</span></a>
</span><span id="Presto-679"><a href="#Presto-679"><span class="linenos">679</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="Presto-680"><a href="#Presto-680"><span class="linenos">680</span></a>
</span><span id="Presto-681"><a href="#Presto-681"><span class="linenos">681</span></a> <span class="c1"># Convert the JSONPath extraction `JSON_EXTRACT(col, &#39;$.x.y) to a ROW access col.x.y</span>
</span><span id="Presto-682"><a href="#Presto-682"><span class="linenos">682</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto-683"><a href="#Presto-683"><span class="linenos">683</span></a> <span class="k">for</span> <span class="n">path_key</span> <span class="ow">in</span> <span class="n">expression</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">1</span><span class="p">:]:</span>
</span><span id="Presto-684"><a href="#Presto-684"><span class="linenos">684</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path_key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">):</span>
</span><span id="Presto-685"><a href="#Presto-685"><span class="linenos">685</span></a> <span class="c1"># Cannot transpile subscripts, wildcards etc to dot notation</span>
</span><span id="Presto-686"><a href="#Presto-686"><span class="linenos">686</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="Presto-687"><a href="#Presto-687"><span class="linenos">687</span></a> <span class="sa">f</span><span class="s2">&quot;Cannot transpile JSONPath segment &#39;</span><span class="si">{</span><span class="n">path_key</span><span class="si">}</span><span class="s2">&#39; to ROW access&quot;</span>
</span><span id="Presto-688"><a href="#Presto-688"><span class="linenos">688</span></a> <span class="p">)</span>
</span><span id="Presto-689"><a href="#Presto-689"><span class="linenos">689</span></a> <span class="k">continue</span>
</span><span id="Presto-690"><a href="#Presto-690"><span class="linenos">690</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">path_key</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto-691"><a href="#Presto-691"><span class="linenos">691</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
</span><span id="Presto-692"><a href="#Presto-692"><span class="linenos">692</span></a> <span class="n">key</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">&quot;&#39;</span>
</span><span id="Presto-693"><a href="#Presto-693"><span class="linenos">693</span></a> <span class="n">segments</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="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Presto-694"><a href="#Presto-694"><span class="linenos">694</span></a>
</span><span id="Presto-695"><a href="#Presto-695"><span class="linenos">695</span></a> <span class="n">expr</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">segments</span><span class="p">)</span>
</span><span id="Presto-696"><a href="#Presto-696"><span class="linenos">696</span></a>
</span><span id="Presto-697"><a href="#Presto-697"><span class="linenos">697</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="n">expr</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
<div id="Presto.INDEX_OFFSET" class="classattr">
<div class="attr variable">
<span class="name">INDEX_OFFSET</span> =
<span class="default_value">1</span>
</div>
<a class="headerlink" href="#Presto.INDEX_OFFSET"></a>
<div class="docstring"><p>The base index offset for arrays.</p>
</div>
</div>
<div id="Presto.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="#Presto.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="Presto.TIME_FORMAT" class="classattr">
<div class="attr variable">
<span class="name">TIME_FORMAT</span> =
<span class="default_value">&#34;&#39;%Y-%m-%d %T&#39;&#34;</span>
</div>
<a class="headerlink" href="#Presto.TIME_FORMAT"></a>
</div>
<div id="Presto.STRICT_STRING_CONCAT" class="classattr">
<div class="attr variable">
<span class="name">STRICT_STRING_CONCAT</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#Presto.STRICT_STRING_CONCAT"></a>
<div class="docstring"><p>Whether <code>CONCAT</code>'s arguments must be strings.</p>
</div>
</div>
<div id="Presto.SUPPORTS_SEMI_ANTI_JOIN" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_SEMI_ANTI_JOIN</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.SUPPORTS_SEMI_ANTI_JOIN"></a>
<div class="docstring"><p>Whether <code>SEMI</code> or <code>ANTI</code> joins are supported.</p>
</div>
</div>
<div id="Presto.TYPED_DIVISION" class="classattr">
<div class="attr variable">
<span class="name">TYPED_DIVISION</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#Presto.TYPED_DIVISION"></a>
<div class="docstring"><p>Whether the behavior of <code>a / b</code> depends on the types of <code>a</code> and <code>b</code>.
False means <code>a / b</code> is always float division.
True means <code>a / b</code> is integer division if both <code>a</code> and <code>b</code> are integers.</p>
</div>
</div>
<div id="Presto.TABLESAMPLE_SIZE_IS_PERCENT" class="classattr">
<div class="attr variable">
<span class="name">TABLESAMPLE_SIZE_IS_PERCENT</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#Presto.TABLESAMPLE_SIZE_IS_PERCENT"></a>
<div class="docstring"><p>Whether a size in the table sample clause represents percentage.</p>
</div>
</div>
<div id="Presto.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="#Presto.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="Presto.TIME_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">TIME_MAPPING</span> =
<input id="Presto.TIME_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.TIME_MAPPING-view-value"></label><span class="default_value">{&#39;%M&#39;: &#39;%B&#39;, &#39;%c&#39;: &#39;%-m&#39;, &#39;%e&#39;: &#39;%-d&#39;, &#39;%h&#39;: &#39;%I&#39;, &#39;%i&#39;: &#39;%M&#39;, &#39;%s&#39;: &#39;%S&#39;, &#39;%u&#39;: &#39;%W&#39;, &#39;%k&#39;: &#39;%-H&#39;, &#39;%l&#39;: &#39;%-I&#39;, &#39;%T&#39;: &#39;%H:%M:%S&#39;, &#39;%W&#39;: &#39;%A&#39;}</span>
</div>
<a class="headerlink" href="#Presto.TIME_MAPPING"></a>
<div class="docstring"><p>Associates this dialect's time formats with their equivalent Python <code>strftime</code> formats.</p>
</div>
</div>
<div id="Presto.NORMALIZATION_STRATEGY" class="classattr">
<div class="attr variable">
<span class="name">NORMALIZATION_STRATEGY</span> =
<span class="default_value">&lt;NormalizationStrategy.CASE_INSENSITIVE: &#39;CASE_INSENSITIVE&#39;&gt;</span>
</div>
<a class="headerlink" href="#Presto.NORMALIZATION_STRATEGY"></a>
<div class="docstring"><p>Specifies the strategy according to which identifiers should be normalized.</p>
</div>
</div>
<div id="Presto.ANNOTATORS" class="classattr">
<div class="attr variable">
<span class="name">ANNOTATORS</span> =
<input id="Presto.ANNOTATORS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.ANNOTATORS-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#Alias">sqlglot.expressions.Alias</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseNot">sqlglot.expressions.BitwiseNot</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Neg">sqlglot.expressions.Neg</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Not">sqlglot.expressions.Not</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Paren">sqlglot.expressions.Paren</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#PivotAlias">sqlglot.expressions.PivotAlias</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Unary">sqlglot.expressions.Unary</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Add">sqlglot.expressions.Add</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#And">sqlglot.expressions.And</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Binary">sqlglot.expressions.Binary</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseAnd">sqlglot.expressions.BitwiseAnd</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseLeftShift">sqlglot.expressions.BitwiseLeftShift</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseOr">sqlglot.expressions.BitwiseOr</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseRightShift">sqlglot.expressions.BitwiseRightShift</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Connector">sqlglot.expressions.Connector</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DPipe">sqlglot.expressions.DPipe</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Distance">sqlglot.expressions.Distance</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Div">sqlglot.expressions.Div</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Dot">sqlglot.expressions.Dot</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Escape">sqlglot.expressions.Escape</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#GT">sqlglot.expressions.GT</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Glob">sqlglot.expressions.Glob</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ILike">sqlglot.expressions.ILike</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ILikeAny">sqlglot.expressions.ILikeAny</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#IntDiv">sqlglot.expressions.IntDiv</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Is">sqlglot.expressions.Is</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Kwarg">sqlglot.expressions.Kwarg</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#LT">sqlglot.expressions.LT</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Like">sqlglot.expressions.Like</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#LikeAny">sqlglot.expressions.LikeAny</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Mod">sqlglot.expressions.Mod</a>&#39;&gt;: &lt;function Presto.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Mul">sqlglot.expressions.Mul</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#NullSafeEQ">sqlglot.expressions.NullSafeEQ</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#NullSafeNEQ">sqlglot.expressions.NullSafeNEQ</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Operator">sqlglot.expressions.Operator</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Or">sqlglot.expressions.Or</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Overlaps">sqlglot.expressions.Overlaps</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#PropertyEQ">sqlglot.expressions.PropertyEQ</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SimilarTo">sqlglot.expressions.SimilarTo</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Slice">sqlglot.expressions.Slice</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Sub">sqlglot.expressions.Sub</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>&#39;&gt;: &lt;function Dialect.&lt;dictcomp&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Between">sqlglot.expressions.Between</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Boolean">sqlglot.expressions.Boolean</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#In">sqlglot.expressions.In</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Date">sqlglot.expressions.Date</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Datetime">sqlglot.expressions.Datetime</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Round">sqlglot.expressions.Round</a>&#39;&gt;: &lt;function Presto.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Log">sqlglot.expressions.Log</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;: &lt;function Presto.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>&#39;&gt;: &lt;function Presto.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Time">sqlglot.expressions.Time</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Day">sqlglot.expressions.Day</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Year">sqlglot.expressions.Year</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Week">sqlglot.expressions.Week</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Month">sqlglot.expressions.Month</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateToDateStr">sqlglot.expressions.DateToDateStr</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeToTimeStr">sqlglot.expressions.TimeToTimeStr</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TsOrDsToDateStr">sqlglot.expressions.TsOrDsToDateStr</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>&#39;&gt;: &lt;function _annotate_with_type_lambda.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>&#39;&gt;: &lt;function Presto.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Anonymous">sqlglot.expressions.Anonymous</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Array">sqlglot.expressions.Array</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Bracket">sqlglot.expressions.Bracket</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Case">sqlglot.expressions.Case</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Count">sqlglot.expressions.Count</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DataType">sqlglot.expressions.DataType</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Distinct">sqlglot.expressions.Distinct</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Filter">sqlglot.expressions.Filter</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#GenerateTimestampArray">sqlglot.expressions.GenerateTimestampArray</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#If">sqlglot.expressions.If</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Interval">sqlglot.expressions.Interval</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Least">sqlglot.expressions.Least</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Literal">sqlglot.expressions.Literal</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Map">sqlglot.expressions.Map</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Max">sqlglot.expressions.Max</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Min">sqlglot.expressions.Min</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Null">sqlglot.expressions.Null</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Unnest">sqlglot.expressions.Unnest</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>&#39;&gt;: &lt;function Dialect.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>&#39;&gt;: &lt;function Presto.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>&#39;&gt;: &lt;function Presto.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#Presto.ANNOTATORS"></a>
</div>
<div id="Presto.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="#Presto.SUPPORTS_COLUMN_JOIN_MARKS"></a>
<div class="docstring"><p>Whether the old-style outer join (+) syntax is supported.</p>
</div>
</div>
<div id="Presto.tokenizer_class" class="classattr">
<div class="attr variable">
<span class="name">tokenizer_class</span> =
<span class="default_value">&lt;class &#39;<a href="#Presto.Tokenizer">Presto.Tokenizer</a>&#39;&gt;</span>
</div>
<a class="headerlink" href="#Presto.tokenizer_class"></a>
</div>
<div id="Presto.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="#Presto.jsonpath_tokenizer_class"></a>
</div>
<div id="Presto.parser_class" class="classattr">
<div class="attr variable">
<span class="name">parser_class</span> =
<span class="default_value">&lt;class &#39;<a href="#Presto.Parser">Presto.Parser</a>&#39;&gt;</span>
</div>
<a class="headerlink" href="#Presto.parser_class"></a>
</div>
<div id="Presto.generator_class" class="classattr">
<div class="attr variable">
<span class="name">generator_class</span> =
<span class="default_value">&lt;class &#39;<a href="#Presto.Generator">Presto.Generator</a>&#39;&gt;</span>
</div>
<a class="headerlink" href="#Presto.generator_class"></a>
</div>
<div id="Presto.TIME_TRIE" class="classattr">
<div class="attr variable">
<span class="name">TIME_TRIE</span><span class="annotation">: Dict</span> =
<input id="Presto.TIME_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.TIME_TRIE-view-value"></label><span class="default_value">{&#39;%&#39;: {&#39;M&#39;: {0: True}, &#39;c&#39;: {0: True}, &#39;e&#39;: {0: True}, &#39;h&#39;: {0: True}, &#39;i&#39;: {0: True}, &#39;s&#39;: {0: True}, &#39;u&#39;: {0: True}, &#39;k&#39;: {0: True}, &#39;l&#39;: {0: True}, &#39;T&#39;: {0: True}, &#39;W&#39;: {0: True}}}</span>
</div>
<a class="headerlink" href="#Presto.TIME_TRIE"></a>
</div>
<div id="Presto.FORMAT_TRIE" class="classattr">
<div class="attr variable">
<span class="name">FORMAT_TRIE</span><span class="annotation">: Dict</span> =
<input id="Presto.FORMAT_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.FORMAT_TRIE-view-value"></label><span class="default_value">{&#39;%&#39;: {&#39;M&#39;: {0: True}, &#39;c&#39;: {0: True}, &#39;e&#39;: {0: True}, &#39;h&#39;: {0: True}, &#39;i&#39;: {0: True}, &#39;s&#39;: {0: True}, &#39;u&#39;: {0: True}, &#39;k&#39;: {0: True}, &#39;l&#39;: {0: True}, &#39;T&#39;: {0: True}, &#39;W&#39;: {0: True}}}</span>
</div>
<a class="headerlink" href="#Presto.FORMAT_TRIE"></a>
</div>
<div id="Presto.INVERSE_TIME_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">INVERSE_TIME_MAPPING</span><span class="annotation">: Dict[str, str]</span> =
<input id="Presto.INVERSE_TIME_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.INVERSE_TIME_MAPPING-view-value"></label><span class="default_value">{&#39;%B&#39;: &#39;%M&#39;, &#39;%-m&#39;: &#39;%c&#39;, &#39;%-d&#39;: &#39;%e&#39;, &#39;%I&#39;: &#39;%h&#39;, &#39;%M&#39;: &#39;%i&#39;, &#39;%S&#39;: &#39;%s&#39;, &#39;%W&#39;: &#39;%u&#39;, &#39;%-H&#39;: &#39;%k&#39;, &#39;%-I&#39;: &#39;%l&#39;, &#39;%H:%M:%S&#39;: &#39;%T&#39;, &#39;%A&#39;: &#39;%W&#39;}</span>
</div>
<a class="headerlink" href="#Presto.INVERSE_TIME_MAPPING"></a>
</div>
<div id="Presto.INVERSE_TIME_TRIE" class="classattr">
<div class="attr variable">
<span class="name">INVERSE_TIME_TRIE</span><span class="annotation">: Dict</span> =
<input id="Presto.INVERSE_TIME_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.INVERSE_TIME_TRIE-view-value"></label><span class="default_value">{&#39;%&#39;: {&#39;B&#39;: {0: True}, &#39;-&#39;: {&#39;m&#39;: {0: True}, &#39;d&#39;: {0: True}, &#39;H&#39;: {0: True}, &#39;I&#39;: {0: True}}, &#39;I&#39;: {0: True}, &#39;M&#39;: {0: True}, &#39;S&#39;: {0: True}, &#39;W&#39;: {0: True}, &#39;H&#39;: {&#39;:&#39;: {&#39;%&#39;: {&#39;M&#39;: {&#39;:&#39;: {&#39;%&#39;: {&#39;S&#39;: {0: True}}}}}}}, &#39;A&#39;: {0: True}}}</span>
</div>
<a class="headerlink" href="#Presto.INVERSE_TIME_TRIE"></a>
</div>
<div id="Presto.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="#Presto.INVERSE_FORMAT_MAPPING"></a>
</div>
<div id="Presto.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="#Presto.INVERSE_FORMAT_TRIE"></a>
</div>
<div id="Presto.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">{}</span>
</div>
<a class="headerlink" href="#Presto.INVERSE_CREATABLE_KIND_MAPPING"></a>
</div>
<div id="Presto.ESCAPED_SEQUENCES" class="classattr">
<div class="attr variable">
<span class="name">ESCAPED_SEQUENCES</span><span class="annotation">: Dict[str, str]</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#Presto.ESCAPED_SEQUENCES"></a>
</div>
<div id="Presto.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="#Presto.QUOTE_START"></a>
</div>
<div id="Presto.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="#Presto.QUOTE_END"></a>
</div>
<div id="Presto.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="#Presto.IDENTIFIER_START"></a>
</div>
<div id="Presto.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="#Presto.IDENTIFIER_END"></a>
</div>
<div id="Presto.BIT_START" class="classattr">
<div class="attr variable">
<span class="name">BIT_START</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#Presto.BIT_START"></a>
</div>
<div id="Presto.BIT_END" class="classattr">
<div class="attr variable">
<span class="name">BIT_END</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#Presto.BIT_END"></a>
</div>
<div id="Presto.HEX_START" class="classattr">
<div class="attr variable">
<span class="name">HEX_START</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#Presto.HEX_START"></a>
</div>
<div id="Presto.HEX_END" class="classattr">
<div class="attr variable">
<span class="name">HEX_END</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">None</span>
</div>
<a class="headerlink" href="#Presto.HEX_END"></a>
</div>
<div id="Presto.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="#Presto.BYTE_START"></a>
</div>
<div id="Presto.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="#Presto.BYTE_END"></a>
</div>
<div id="Presto.UNICODE_START" class="classattr">
<div class="attr variable">
<span class="name">UNICODE_START</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">&#34;U&amp;&#39;&#34;</span>
</div>
<a class="headerlink" href="#Presto.UNICODE_START"></a>
</div>
<div id="Presto.UNICODE_END" class="classattr">
<div class="attr variable">
<span class="name">UNICODE_END</span><span class="annotation">: Optional[str]</span> =
<span class="default_value">&#34;&#39;&#34;</span>
</div>
<a class="headerlink" href="#Presto.UNICODE_END"></a>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt><a href="dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></dt>
<dd id="Presto.__init__" class="function"><a href="dialect.html#Dialect.__init__">Dialect</a></dd>
<dd id="Presto.WEEK_OFFSET" class="variable"><a href="dialect.html#Dialect.WEEK_OFFSET">WEEK_OFFSET</a></dd>
<dd id="Presto.UNNEST_COLUMN_ONLY" class="variable"><a href="dialect.html#Dialect.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd>
<dd id="Presto.ALIAS_POST_TABLESAMPLE" class="variable"><a href="dialect.html#Dialect.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Presto.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Presto.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="Presto.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Presto.COPY_PARAMS_ARE_CSV" class="variable"><a href="dialect.html#Dialect.COPY_PARAMS_ARE_CSV">COPY_PARAMS_ARE_CSV</a></dd>
<dd id="Presto.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Presto.SAFE_DIVISION" class="variable"><a href="dialect.html#Dialect.SAFE_DIVISION">SAFE_DIVISION</a></dd>
<dd id="Presto.CONCAT_COALESCE" class="variable"><a href="dialect.html#Dialect.CONCAT_COALESCE">CONCAT_COALESCE</a></dd>
<dd id="Presto.HEX_LOWERCASE" class="variable"><a href="dialect.html#Dialect.HEX_LOWERCASE">HEX_LOWERCASE</a></dd>
<dd id="Presto.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd>
<dd id="Presto.DATEINT_FORMAT" class="variable"><a href="dialect.html#Dialect.DATEINT_FORMAT">DATEINT_FORMAT</a></dd>
<dd id="Presto.FORMAT_MAPPING" class="variable"><a href="dialect.html#Dialect.FORMAT_MAPPING">FORMAT_MAPPING</a></dd>
<dd id="Presto.UNESCAPED_SEQUENCES" class="variable"><a href="dialect.html#Dialect.UNESCAPED_SEQUENCES">UNESCAPED_SEQUENCES</a></dd>
<dd id="Presto.PSEUDOCOLUMNS" class="variable"><a href="dialect.html#Dialect.PSEUDOCOLUMNS">PSEUDOCOLUMNS</a></dd>
<dd id="Presto.PREFER_CTE_ALIAS_COLUMN" class="variable"><a href="dialect.html#Dialect.PREFER_CTE_ALIAS_COLUMN">PREFER_CTE_ALIAS_COLUMN</a></dd>
<dd id="Presto.FORCE_EARLY_ALIAS_REF_EXPANSION" class="variable"><a href="dialect.html#Dialect.FORCE_EARLY_ALIAS_REF_EXPANSION">FORCE_EARLY_ALIAS_REF_EXPANSION</a></dd>
<dd id="Presto.EXPAND_ALIAS_REFS_EARLY_ONLY_IN_GROUP_BY" class="variable"><a href="dialect.html#Dialect.EXPAND_ALIAS_REFS_EARLY_ONLY_IN_GROUP_BY">EXPAND_ALIAS_REFS_EARLY_ONLY_IN_GROUP_BY</a></dd>
<dd id="Presto.SUPPORTS_ORDER_BY_ALL" class="variable"><a href="dialect.html#Dialect.SUPPORTS_ORDER_BY_ALL">SUPPORTS_ORDER_BY_ALL</a></dd>
<dd id="Presto.HAS_DISTINCT_ARRAY_CONSTRUCTORS" class="variable"><a href="dialect.html#Dialect.HAS_DISTINCT_ARRAY_CONSTRUCTORS">HAS_DISTINCT_ARRAY_CONSTRUCTORS</a></dd>
<dd id="Presto.SUPPORTS_FIXED_SIZE_ARRAYS" class="variable"><a href="dialect.html#Dialect.SUPPORTS_FIXED_SIZE_ARRAYS">SUPPORTS_FIXED_SIZE_ARRAYS</a></dd>
<dd id="Presto.STRICT_JSON_PATH_SYNTAX" class="variable"><a href="dialect.html#Dialect.STRICT_JSON_PATH_SYNTAX">STRICT_JSON_PATH_SYNTAX</a></dd>
<dd id="Presto.ON_CONDITION_EMPTY_BEFORE_ERROR" class="variable"><a href="dialect.html#Dialect.ON_CONDITION_EMPTY_BEFORE_ERROR">ON_CONDITION_EMPTY_BEFORE_ERROR</a></dd>
<dd id="Presto.ARRAY_AGG_INCLUDES_NULLS" class="variable"><a href="dialect.html#Dialect.ARRAY_AGG_INCLUDES_NULLS">ARRAY_AGG_INCLUDES_NULLS</a></dd>
<dd id="Presto.REGEXP_EXTRACT_DEFAULT_GROUP" class="variable"><a href="dialect.html#Dialect.REGEXP_EXTRACT_DEFAULT_GROUP">REGEXP_EXTRACT_DEFAULT_GROUP</a></dd>
<dd id="Presto.SET_OP_DISTINCT_BY_DEFAULT" class="variable"><a href="dialect.html#Dialect.SET_OP_DISTINCT_BY_DEFAULT">SET_OP_DISTINCT_BY_DEFAULT</a></dd>
<dd id="Presto.CREATABLE_KIND_MAPPING" class="variable"><a href="dialect.html#Dialect.CREATABLE_KIND_MAPPING">CREATABLE_KIND_MAPPING</a></dd>
<dd id="Presto.DATE_PART_MAPPING" class="variable"><a href="dialect.html#Dialect.DATE_PART_MAPPING">DATE_PART_MAPPING</a></dd>
<dd id="Presto.TYPE_TO_EXPRESSIONS" class="variable"><a href="dialect.html#Dialect.TYPE_TO_EXPRESSIONS">TYPE_TO_EXPRESSIONS</a></dd>
<dd id="Presto.get_or_raise" class="function"><a href="dialect.html#Dialect.get_or_raise">get_or_raise</a></dd>
<dd id="Presto.format_time" class="function"><a href="dialect.html#Dialect.format_time">format_time</a></dd>
<dd id="Presto.settings" class="variable"><a href="dialect.html#Dialect.settings">settings</a></dd>
<dd id="Presto.normalize_identifier" class="function"><a href="dialect.html#Dialect.normalize_identifier">normalize_identifier</a></dd>
<dd id="Presto.case_sensitive" class="function"><a href="dialect.html#Dialect.case_sensitive">case_sensitive</a></dd>
<dd id="Presto.can_identify" class="function"><a href="dialect.html#Dialect.can_identify">can_identify</a></dd>
<dd id="Presto.quote_identifier" class="function"><a href="dialect.html#Dialect.quote_identifier">quote_identifier</a></dd>
<dd id="Presto.to_json_path" class="function"><a href="dialect.html#Dialect.to_json_path">to_json_path</a></dd>
<dd id="Presto.parse" class="function"><a href="dialect.html#Dialect.parse">parse</a></dd>
<dd id="Presto.parse_into" class="function"><a href="dialect.html#Dialect.parse_into">parse_into</a></dd>
<dd id="Presto.generate" class="function"><a href="dialect.html#Dialect.generate">generate</a></dd>
<dd id="Presto.transpile" class="function"><a href="dialect.html#Dialect.transpile">transpile</a></dd>
<dd id="Presto.tokenize" class="function"><a href="dialect.html#Dialect.tokenize">tokenize</a></dd>
<dd id="Presto.tokenizer" class="variable"><a href="dialect.html#Dialect.tokenizer">tokenizer</a></dd>
<dd id="Presto.jsonpath_tokenizer" class="variable"><a href="dialect.html#Dialect.jsonpath_tokenizer">jsonpath_tokenizer</a></dd>
<dd id="Presto.parser" class="function"><a href="dialect.html#Dialect.parser">parser</a></dd>
<dd id="Presto.generator" class="function"><a href="dialect.html#Dialect.generator">generator</a></dd>
</div>
</dl>
</div>
</section>
<section id="Presto.Tokenizer">
<input id="Presto.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">Presto.Tokenizer</span><wbr>(<span class="base"><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></span>):
<label class="view-source-button" for="Presto.Tokenizer-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Tokenizer"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Tokenizer-238"><a href="#Presto.Tokenizer-238"><span class="linenos">238</span></a> <span class="k">class</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="Presto.Tokenizer-239"><a href="#Presto.Tokenizer-239"><span class="linenos">239</span></a> <span class="n">UNICODE_STRINGS</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="Presto.Tokenizer-240"><a href="#Presto.Tokenizer-240"><span class="linenos">240</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">q</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
</span><span id="Presto.Tokenizer-241"><a href="#Presto.Tokenizer-241"><span class="linenos">241</span></a> <span class="k">for</span> <span class="n">q</span> <span class="ow">in</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</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="nb">str</span><span class="p">],</span> <span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">QUOTES</span><span class="p">)</span>
</span><span id="Presto.Tokenizer-242"><a href="#Presto.Tokenizer-242"><span class="linenos">242</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;U&amp;&quot;</span><span class="p">,</span> <span class="s2">&quot;u&amp;&quot;</span><span class="p">)</span>
</span><span id="Presto.Tokenizer-243"><a href="#Presto.Tokenizer-243"><span class="linenos">243</span></a> <span class="p">]</span>
</span><span id="Presto.Tokenizer-244"><a href="#Presto.Tokenizer-244"><span class="linenos">244</span></a>
</span><span id="Presto.Tokenizer-245"><a href="#Presto.Tokenizer-245"><span class="linenos">245</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto.Tokenizer-246"><a href="#Presto.Tokenizer-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="Presto.Tokenizer-247"><a href="#Presto.Tokenizer-247"><span class="linenos">247</span></a> <span class="s2">&quot;START&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
</span><span id="Presto.Tokenizer-248"><a href="#Presto.Tokenizer-248"><span class="linenos">248</span></a> <span class="s2">&quot;MATCH_RECOGNIZE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">,</span>
</span><span id="Presto.Tokenizer-249"><a href="#Presto.Tokenizer-249"><span class="linenos">249</span></a> <span class="s2">&quot;ROW&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="Presto.Tokenizer-250"><a href="#Presto.Tokenizer-250"><span class="linenos">250</span></a> <span class="s2">&quot;IPADDRESS&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPADDRESS</span><span class="p">,</span>
</span><span id="Presto.Tokenizer-251"><a href="#Presto.Tokenizer-251"><span class="linenos">251</span></a> <span class="s2">&quot;IPPREFIX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPPREFIX</span><span class="p">,</span>
</span><span id="Presto.Tokenizer-252"><a href="#Presto.Tokenizer-252"><span class="linenos">252</span></a> <span class="s2">&quot;TDIGEST&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TDIGEST</span><span class="p">,</span>
</span><span id="Presto.Tokenizer-253"><a href="#Presto.Tokenizer-253"><span class="linenos">253</span></a> <span class="s2">&quot;HYPERLOGLOG&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HLLSKETCH</span><span class="p">,</span>
</span><span id="Presto.Tokenizer-254"><a href="#Presto.Tokenizer-254"><span class="linenos">254</span></a> <span class="p">}</span>
</span><span id="Presto.Tokenizer-255"><a href="#Presto.Tokenizer-255"><span class="linenos">255</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="Presto.Tokenizer-256"><a href="#Presto.Tokenizer-256"><span class="linenos">256</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;QUALIFY&quot;</span><span class="p">)</span>
</span></pre></div>
<div id="Presto.Tokenizer.UNICODE_STRINGS" class="classattr">
<div class="attr variable">
<span class="name">UNICODE_STRINGS</span> =
<span class="default_value">[(&#34;U&amp;&#39;&#34;, &#34;&#39;&#34;), (&#34;u&amp;&#39;&#34;, &#34;&#39;&#34;)]</span>
</div>
<a class="headerlink" href="#Presto.Tokenizer.UNICODE_STRINGS"></a>
</div>
<div id="Presto.Tokenizer.KEYWORDS" class="classattr">
<div class="attr variable">
<span class="name">KEYWORDS</span> =
<input id="Presto.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.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_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;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;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.STRUCT: &#39;STRUCT&#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;INT128&#39;: &lt;TokenType.INT128: &#39;INT128&#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;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;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;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.COMMAND: &#39;COMMAND&#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;START&#39;: &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &#39;MATCH_RECOGNIZE&#39;: &lt;TokenType.MATCH_RECOGNIZE: &#39;MATCH_RECOGNIZE&#39;&gt;, &#39;IPADDRESS&#39;: &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &#39;IPPREFIX&#39;: &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &#39;TDIGEST&#39;: &lt;TokenType.TDIGEST: &#39;TDIGEST&#39;&gt;, &#39;HYPERLOGLOG&#39;: &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;}</span>
</div>
<a class="headerlink" href="#Presto.Tokenizer.KEYWORDS"></a>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt>
<dd id="Presto.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd>
<dd id="Presto.Tokenizer.SINGLE_TOKENS" class="variable"><a href="../tokens.html#Tokenizer.SINGLE_TOKENS">SINGLE_TOKENS</a></dd>
<dd id="Presto.Tokenizer.BIT_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.BIT_STRINGS">BIT_STRINGS</a></dd>
<dd id="Presto.Tokenizer.BYTE_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.BYTE_STRINGS">BYTE_STRINGS</a></dd>
<dd id="Presto.Tokenizer.HEX_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.HEX_STRINGS">HEX_STRINGS</a></dd>
<dd id="Presto.Tokenizer.RAW_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.RAW_STRINGS">RAW_STRINGS</a></dd>
<dd id="Presto.Tokenizer.HEREDOC_STRINGS" class="variable"><a href="../tokens.html#Tokenizer.HEREDOC_STRINGS">HEREDOC_STRINGS</a></dd>
<dd id="Presto.Tokenizer.IDENTIFIERS" class="variable"><a href="../tokens.html#Tokenizer.IDENTIFIERS">IDENTIFIERS</a></dd>
<dd id="Presto.Tokenizer.IDENTIFIER_ESCAPES" class="variable"><a href="../tokens.html#Tokenizer.IDENTIFIER_ESCAPES">IDENTIFIER_ESCAPES</a></dd>
<dd id="Presto.Tokenizer.QUOTES" class="variable"><a href="../tokens.html#Tokenizer.QUOTES">QUOTES</a></dd>
<dd id="Presto.Tokenizer.STRING_ESCAPES" class="variable"><a href="../tokens.html#Tokenizer.STRING_ESCAPES">STRING_ESCAPES</a></dd>
<dd id="Presto.Tokenizer.VAR_SINGLE_TOKENS" class="variable"><a href="../tokens.html#Tokenizer.VAR_SINGLE_TOKENS">VAR_SINGLE_TOKENS</a></dd>
<dd id="Presto.Tokenizer.HEREDOC_TAG_IS_IDENTIFIER" class="variable"><a href="../tokens.html#Tokenizer.HEREDOC_TAG_IS_IDENTIFIER">HEREDOC_TAG_IS_IDENTIFIER</a></dd>
<dd id="Presto.Tokenizer.HEREDOC_STRING_ALTERNATIVE" class="variable"><a href="../tokens.html#Tokenizer.HEREDOC_STRING_ALTERNATIVE">HEREDOC_STRING_ALTERNATIVE</a></dd>
<dd id="Presto.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="Presto.Tokenizer.NESTED_COMMENTS" class="variable"><a href="../tokens.html#Tokenizer.NESTED_COMMENTS">NESTED_COMMENTS</a></dd>
<dd id="Presto.Tokenizer.WHITE_SPACE" class="variable"><a href="../tokens.html#Tokenizer.WHITE_SPACE">WHITE_SPACE</a></dd>
<dd id="Presto.Tokenizer.COMMANDS" class="variable"><a href="../tokens.html#Tokenizer.COMMANDS">COMMANDS</a></dd>
<dd id="Presto.Tokenizer.COMMAND_PREFIX_TOKENS" class="variable"><a href="../tokens.html#Tokenizer.COMMAND_PREFIX_TOKENS">COMMAND_PREFIX_TOKENS</a></dd>
<dd id="Presto.Tokenizer.NUMERIC_LITERALS" class="variable"><a href="../tokens.html#Tokenizer.NUMERIC_LITERALS">NUMERIC_LITERALS</a></dd>
<dd id="Presto.Tokenizer.COMMENTS" class="variable"><a href="../tokens.html#Tokenizer.COMMENTS">COMMENTS</a></dd>
<dd id="Presto.Tokenizer.dialect" class="variable"><a href="../tokens.html#Tokenizer.dialect">dialect</a></dd>
<dd id="Presto.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd>
<dd id="Presto.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd>
<dd id="Presto.Tokenizer.tokenize_rs" class="function"><a href="../tokens.html#Tokenizer.tokenize_rs">tokenize_rs</a></dd>
<dd id="Presto.Tokenizer.size" class="variable"><a href="../tokens.html#Tokenizer.size">size</a></dd>
<dd id="Presto.Tokenizer.sql" class="variable"><a href="../tokens.html#Tokenizer.sql">sql</a></dd>
<dd id="Presto.Tokenizer.tokens" class="variable"><a href="../tokens.html#Tokenizer.tokens">tokens</a></dd>
</div>
</dl>
</div>
</section>
<section id="Presto.Parser">
<input id="Presto.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">Presto.Parser</span><wbr>(<span class="base"><a href="../parser.html#Parser">sqlglot.parser.Parser</a></span>):
<label class="view-source-button" for="Presto.Parser-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Parser-258"><a href="#Presto.Parser-258"><span class="linenos">258</span></a> <span class="k">class</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="Presto.Parser-259"><a href="#Presto.Parser-259"><span class="linenos">259</span></a> <span class="n">VALUES_FOLLOWED_BY_PAREN</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Parser-260"><a href="#Presto.Parser-260"><span class="linenos">260</span></a>
</span><span id="Presto.Parser-261"><a href="#Presto.Parser-261"><span class="linenos">261</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto.Parser-262"><a href="#Presto.Parser-262"><span class="linenos">262</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="Presto.Parser-263"><a href="#Presto.Parser-263"><span class="linenos">263</span></a> <span class="s2">&quot;ARBITRARY&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="Presto.Parser-264"><a href="#Presto.Parser-264"><span class="linenos">264</span></a> <span class="s2">&quot;APPROX_DISTINCT&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="Presto.Parser-265"><a href="#Presto.Parser-265"><span class="linenos">265</span></a> <span class="s2">&quot;APPROX_PERCENTILE&quot;</span><span class="p">:</span> <span class="n">_build_approx_percentile</span><span class="p">,</span>
</span><span id="Presto.Parser-266"><a href="#Presto.Parser-266"><span class="linenos">266</span></a> <span class="s2">&quot;BITWISE_AND&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</span><span class="p">),</span>
</span><span id="Presto.Parser-267"><a href="#Presto.Parser-267"><span class="linenos">267</span></a> <span class="s2">&quot;BITWISE_NOT&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">BitwiseNot</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="Presto.Parser-268"><a href="#Presto.Parser-268"><span class="linenos">268</span></a> <span class="s2">&quot;BITWISE_OR&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</span><span class="p">),</span>
</span><span id="Presto.Parser-269"><a href="#Presto.Parser-269"><span class="linenos">269</span></a> <span class="s2">&quot;BITWISE_XOR&quot;</span><span class="p">:</span> <span class="n">binary_from_function</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">),</span>
</span><span id="Presto.Parser-270"><a href="#Presto.Parser-270"><span class="linenos">270</span></a> <span class="s2">&quot;CARDINALITY&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-271"><a href="#Presto.Parser-271"><span class="linenos">271</span></a> <span class="s2">&quot;CONTAINS&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-272"><a href="#Presto.Parser-272"><span class="linenos">272</span></a> <span class="s2">&quot;DATE_ADD&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">DateAdd</span><span class="p">(</span>
</span><span id="Presto.Parser-273"><a href="#Presto.Parser-273"><span class="linenos">273</span></a> <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">2</span><span class="p">),</span> <span class="n">expression</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">1</span><span class="p">),</span> <span class="n">unit</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="Presto.Parser-274"><a href="#Presto.Parser-274"><span class="linenos">274</span></a> <span class="p">),</span>
</span><span id="Presto.Parser-275"><a href="#Presto.Parser-275"><span class="linenos">275</span></a> <span class="s2">&quot;DATE_DIFF&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">DateDiff</span><span class="p">(</span>
</span><span id="Presto.Parser-276"><a href="#Presto.Parser-276"><span class="linenos">276</span></a> <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">2</span><span class="p">),</span> <span class="n">expression</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">1</span><span class="p">),</span> <span class="n">unit</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="Presto.Parser-277"><a href="#Presto.Parser-277"><span class="linenos">277</span></a> <span class="p">),</span>
</span><span id="Presto.Parser-278"><a href="#Presto.Parser-278"><span class="linenos">278</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">:</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;presto&quot;</span><span class="p">),</span>
</span><span id="Presto.Parser-279"><a href="#Presto.Parser-279"><span class="linenos">279</span></a> <span class="s2">&quot;DATE_PARSE&quot;</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> <span class="s2">&quot;presto&quot;</span><span class="p">),</span>
</span><span id="Presto.Parser-280"><a href="#Presto.Parser-280"><span class="linenos">280</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="n">date_trunc_to_time</span><span class="p">,</span>
</span><span id="Presto.Parser-281"><a href="#Presto.Parser-281"><span class="linenos">281</span></a> <span class="s2">&quot;DAY_OF_WEEK&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeekIso</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-282"><a href="#Presto.Parser-282"><span class="linenos">282</span></a> <span class="s2">&quot;ELEMENT_AT&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">Bracket</span><span class="p">(</span>
</span><span id="Presto.Parser-283"><a href="#Presto.Parser-283"><span class="linenos">283</span></a> <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">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)],</span> <span class="n">offset</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span>
</span><span id="Presto.Parser-284"><a href="#Presto.Parser-284"><span class="linenos">284</span></a> <span class="p">),</span>
</span><span id="Presto.Parser-285"><a href="#Presto.Parser-285"><span class="linenos">285</span></a> <span class="s2">&quot;FROM_HEX&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unhex</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-286"><a href="#Presto.Parser-286"><span class="linenos">286</span></a> <span class="s2">&quot;FROM_UNIXTIME&quot;</span><span class="p">:</span> <span class="n">_build_from_unixtime</span><span class="p">,</span>
</span><span id="Presto.Parser-287"><a href="#Presto.Parser-287"><span class="linenos">287</span></a> <span class="s2">&quot;FROM_UTF8&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">Decode</span><span class="p">(</span>
</span><span id="Presto.Parser-288"><a href="#Presto.Parser-288"><span class="linenos">288</span></a> <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">replace</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">1</span><span class="p">),</span> <span class="n">charset</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="s2">&quot;utf-8&quot;</span><span class="p">)</span>
</span><span id="Presto.Parser-289"><a href="#Presto.Parser-289"><span class="linenos">289</span></a> <span class="p">),</span>
</span><span id="Presto.Parser-290"><a href="#Presto.Parser-290"><span class="linenos">290</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-291"><a href="#Presto.Parser-291"><span class="linenos">291</span></a> <span class="s2">&quot;REGEXP_EXTRACT&quot;</span><span class="p">:</span> <span class="n">build_regexp_extract</span><span class="p">,</span>
</span><span id="Presto.Parser-292"><a href="#Presto.Parser-292"><span class="linenos">292</span></a> <span class="s2">&quot;REGEXP_REPLACE&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">RegexpReplace</span><span class="p">(</span>
</span><span id="Presto.Parser-293"><a href="#Presto.Parser-293"><span class="linenos">293</span></a> <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="Presto.Parser-294"><a href="#Presto.Parser-294"><span class="linenos">294</span></a> <span class="n">expression</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">1</span><span class="p">),</span>
</span><span id="Presto.Parser-295"><a href="#Presto.Parser-295"><span class="linenos">295</span></a> <span class="n">replacement</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 class="ow">or</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="s2">&quot;&quot;</span><span class="p">),</span>
</span><span id="Presto.Parser-296"><a href="#Presto.Parser-296"><span class="linenos">296</span></a> <span class="p">),</span>
</span><span id="Presto.Parser-297"><a href="#Presto.Parser-297"><span class="linenos">297</span></a> <span class="s2">&quot;ROW&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="Presto.Parser-298"><a href="#Presto.Parser-298"><span class="linenos">298</span></a> <span class="s2">&quot;SEQUENCE&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-299"><a href="#Presto.Parser-299"><span class="linenos">299</span></a> <span class="s2">&quot;SET_AGG&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayUniqueAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-300"><a href="#Presto.Parser-300"><span class="linenos">300</span></a> <span class="s2">&quot;SPLIT_TO_MAP&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToMap</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-301"><a href="#Presto.Parser-301"><span class="linenos">301</span></a> <span class="s2">&quot;STRPOS&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">StrPosition</span><span class="p">(</span>
</span><span id="Presto.Parser-302"><a href="#Presto.Parser-302"><span class="linenos">302</span></a> <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">substr</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">1</span><span class="p">),</span> <span class="n">instance</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="Presto.Parser-303"><a href="#Presto.Parser-303"><span class="linenos">303</span></a> <span class="p">),</span>
</span><span id="Presto.Parser-304"><a href="#Presto.Parser-304"><span class="linenos">304</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">_build_to_char</span><span class="p">,</span>
</span><span id="Presto.Parser-305"><a href="#Presto.Parser-305"><span class="linenos">305</span></a> <span class="s2">&quot;TO_UNIXTIME&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
</span><span id="Presto.Parser-306"><a href="#Presto.Parser-306"><span class="linenos">306</span></a> <span class="s2">&quot;TO_UTF8&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">Encode</span><span class="p">(</span>
</span><span id="Presto.Parser-307"><a href="#Presto.Parser-307"><span class="linenos">307</span></a> <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">charset</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="s2">&quot;utf-8&quot;</span><span class="p">)</span>
</span><span id="Presto.Parser-308"><a href="#Presto.Parser-308"><span class="linenos">308</span></a> <span class="p">),</span>
</span><span id="Presto.Parser-309"><a href="#Presto.Parser-309"><span class="linenos">309</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="Presto.Parser-310"><a href="#Presto.Parser-310"><span class="linenos">310</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="Presto.Parser-311"><a href="#Presto.Parser-311"><span class="linenos">311</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="Presto.Parser-312"><a href="#Presto.Parser-312"><span class="linenos">312</span></a> <span class="p">}</span>
</span><span id="Presto.Parser-313"><a href="#Presto.Parser-313"><span class="linenos">313</span></a>
</span><span id="Presto.Parser-314"><a href="#Presto.Parser-314"><span class="linenos">314</span></a> <span class="n">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">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="Presto.Parser-315"><a href="#Presto.Parser-315"><span class="linenos">315</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;TRIM&quot;</span><span class="p">)</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="Presto.Parser.VALUES_FOLLOWED_BY_PAREN" class="classattr">
<div class="attr variable">
<span class="name">VALUES_FOLLOWED_BY_PAREN</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.Parser.VALUES_FOLLOWED_BY_PAREN"></a>
</div>
<div id="Presto.Parser.FUNCTIONS" class="classattr">
<div class="attr variable">
<span class="name">FUNCTIONS</span> =
<input id="Presto.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.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;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;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;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>&#39;&gt;&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_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 <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;, &#39;DATEDIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;&gt;, &#39;DATE_DIFF&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&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;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>&#39;&gt;&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;function date_trunc_to_time&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#DayOfWeekIso">sqlglot.expressions.DayOfWeekIso</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;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;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;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_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_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_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;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;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&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;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;MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Map">sqlglot.expressions.Map</a>&#39;&gt;&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;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;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;function build_regexp_extract&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;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&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;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;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>&#39;&gt;&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_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;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>&#39;&gt;&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;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>&#39;&gt;&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;function _build_to_char&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_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;TRANSFORM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Transform">sqlglot.expressions.Transform</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_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;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_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;WHEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#When">sqlglot.expressions.When</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;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>&#39;&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;INSTR&#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;TO_HEX&#39;: &lt;function build_hex&gt;, &#39;ARBITRARY&#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;APPROX_PERCENTILE&#39;: &lt;function _build_approx_percentile&gt;, &#39;BITWISE_AND&#39;: &lt;function binary_from_function.&lt;locals&gt;.&lt;lambda&gt;&gt;, &#39;BITWISE_NOT&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;, &#39;BITWISE_OR&#39;: &lt;function binary_from_function.&lt;locals&gt;.&lt;lambda&gt;&gt;, &#39;BITWISE_XOR&#39;: &lt;function binary_from_function.&lt;locals&gt;.&lt;lambda&gt;&gt;, &#39;CARDINALITY&#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;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;DATE_FORMAT&#39;: &lt;function build_formatted_time.&lt;locals&gt;._builder&gt;, &#39;DATE_PARSE&#39;: &lt;function build_formatted_time.&lt;locals&gt;._builder&gt;, &#39;ELEMENT_AT&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;, &#39;FROM_HEX&#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;FROM_UNIXTIME&#39;: &lt;function _build_from_unixtime&gt;, &#39;FROM_UTF8&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;, &#39;NOW&#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;ROW&#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;SEQUENCE&#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;SET_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;SPLIT_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;STRPOS&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;, &#39;TO_UNIXTIME&#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;TO_UTF8&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;, &#39;SHA256&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;, &#39;SHA512&#39;: &lt;function <a href="#Presto.Parser">Presto.Parser</a>.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#Presto.Parser.FUNCTIONS"></a>
</div>
<div id="Presto.Parser.FUNCTION_PARSERS" class="classattr">
<div class="attr variable">
<span class="name">FUNCTION_PARSERS</span> =
<input id="Presto.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="Presto.Parser.FUNCTION_PARSERS-view-value"></label><span class="default_value">{&#39;CAST&#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;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;MATCH&#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;TRY_CAST&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TRY_CONVERT&#39;: &lt;function Parser.&lt;lambda&gt;&gt;}</span>
</div>
<a class="headerlink" href="#Presto.Parser.FUNCTION_PARSERS"></a>
</div>
<div id="Presto.Parser.ID_VAR_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">ID_VAR_TOKENS</span> =
<input id="Presto.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="Presto.Parser.ID_VAR_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.TOP: &#39;TOP&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.UNNEST: &#39;UNNEST&#39;&gt;, &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.CUBE: &#39;CUBE&#39;&gt;, &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;, &lt;TokenType.END: &#39;END&#39;&gt;, &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;, &lt;TokenType.LEFT: &#39;LEFT&#39;&gt;, &lt;TokenType.SEQUENCE: &#39;SEQUENCE&#39;&gt;, &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &lt;TokenType.TAG: &#39;TAG&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &lt;TokenType.ROLLUP: &#39;ROLLUP&#39;&gt;, &lt;TokenType.WAREHOUSE: &#39;WAREHOUSE&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.RIGHT: &#39;RIGHT&#39;&gt;, &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.FINAL: &#39;FINAL&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.RENAME: &#39;RENAME&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.NATURAL: &#39;NATURAL&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.DECIMAL32: &#39;DECIMAL32&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.MODEL: &#39;MODEL&#39;&gt;, &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.FULL: &#39;FULL&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.TDIGEST: &#39;TDIGEST&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.ASOF: &#39;ASOF&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.COPY: &#39;COPY&#39;&gt;, &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &lt;TokenType.USE: &#39;USE&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.VECTOR: &#39;VECTOR&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.OPERATOR: &#39;OPERATOR&#39;&gt;, &lt;TokenType.REFRESH: &#39;REFRESH&#39;&gt;, &lt;TokenType.TRUNCATE: &#39;TRUNCATE&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.SEMI: &#39;SEMI&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.ANTI: &#39;ANTI&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &lt;TokenType.UNIQUEIDENTIFIER: &#39;UNIQUEIDENTIFIER&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;, &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &lt;TokenType.APPLY: &#39;APPLY&#39;&gt;, &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &lt;TokenType.LIST: &#39;LIST&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.DECIMAL64: &#39;DECIMAL64&#39;&gt;, &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.WINDOW: &#39;WINDOW&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.STORAGE_INTEGRATION: &#39;STORAGE_INTEGRATION&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.STRAIGHT_JOIN: &#39;STRAIGHT_JOIN&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.IDENTIFIER: &#39;IDENTIFIER&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &lt;TokenType.OFFSET: &#39;OFFSET&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.DECIMAL128: &#39;DECIMAL128&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.STREAMLIT: &#39;STREAMLIT&#39;&gt;, &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &lt;TokenType.NAME: &#39;NAME&#39;&gt;, &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;}</span>
</div>
<a class="headerlink" href="#Presto.Parser.ID_VAR_TOKENS"></a>
</div>
<div id="Presto.Parser.TABLE_ALIAS_TOKENS" class="classattr">
<div class="attr variable">
<span class="name">TABLE_ALIAS_TOKENS</span> =
<input id="Presto.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="Presto.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.TOP: &#39;TOP&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.UNNEST: &#39;UNNEST&#39;&gt;, &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.CUBE: &#39;CUBE&#39;&gt;, &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;, &lt;TokenType.END: &#39;END&#39;&gt;, &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;, &lt;TokenType.SEQUENCE: &#39;SEQUENCE&#39;&gt;, &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &lt;TokenType.TAG: &#39;TAG&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.TIMESTAMPNTZ: &#39;TIMESTAMPNTZ&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &lt;TokenType.ROLLUP: &#39;ROLLUP&#39;&gt;, &lt;TokenType.WAREHOUSE: &#39;WAREHOUSE&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.FINAL: &#39;FINAL&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.RENAME: &#39;RENAME&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.DECIMAL32: &#39;DECIMAL32&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.MODEL: &#39;MODEL&#39;&gt;, &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.TDIGEST: &#39;TDIGEST&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.COPY: &#39;COPY&#39;&gt;, &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &lt;TokenType.USE: &#39;USE&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.VECTOR: &#39;VECTOR&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.OPERATOR: &#39;OPERATOR&#39;&gt;, &lt;TokenType.REFRESH: &#39;REFRESH&#39;&gt;, &lt;TokenType.TRUNCATE: &#39;TRUNCATE&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.SEMI: &#39;SEMI&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.ANTI: &#39;ANTI&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &lt;TokenType.UNIQUEIDENTIFIER: &#39;UNIQUEIDENTIFIER&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;, &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &lt;TokenType.LIST: &#39;LIST&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.DECIMAL64: &#39;DECIMAL64&#39;&gt;, &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.STORAGE_INTEGRATION: &#39;STORAGE_INTEGRATION&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.STRAIGHT_JOIN: &#39;STRAIGHT_JOIN&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.IDENTIFIER: &#39;IDENTIFIER&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.DECIMAL128: &#39;DECIMAL128&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.STREAMLIT: &#39;STREAMLIT&#39;&gt;, &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &lt;TokenType.NAME: &#39;NAME&#39;&gt;, &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;}</span>
</div>
<a class="headerlink" href="#Presto.Parser.TABLE_ALIAS_TOKENS"></a>
</div>
<div id="Presto.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="#Presto.Parser.SHOW_TRIE"></a>
</div>
<div id="Presto.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="#Presto.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="Presto.Parser.__init__" class="function"><a href="../parser.html#Parser.__init__">Parser</a></dd>
<dd id="Presto.Parser.NO_PAREN_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NO_PAREN_FUNCTIONS">NO_PAREN_FUNCTIONS</a></dd>
<dd id="Presto.Parser.STRUCT_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.STRUCT_TYPE_TOKENS">STRUCT_TYPE_TOKENS</a></dd>
<dd id="Presto.Parser.NESTED_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.NESTED_TYPE_TOKENS">NESTED_TYPE_TOKENS</a></dd>
<dd id="Presto.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd>
<dd id="Presto.Parser.AGGREGATE_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.AGGREGATE_TYPE_TOKENS">AGGREGATE_TYPE_TOKENS</a></dd>
<dd id="Presto.Parser.TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd>
<dd id="Presto.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="Presto.Parser.SUBQUERY_PREDICATES" class="variable"><a href="../parser.html#Parser.SUBQUERY_PREDICATES">SUBQUERY_PREDICATES</a></dd>
<dd id="Presto.Parser.RESERVED_TOKENS" class="variable"><a href="../parser.html#Parser.RESERVED_TOKENS">RESERVED_TOKENS</a></dd>
<dd id="Presto.Parser.DB_CREATABLES" class="variable"><a href="../parser.html#Parser.DB_CREATABLES">DB_CREATABLES</a></dd>
<dd id="Presto.Parser.CREATABLES" class="variable"><a href="../parser.html#Parser.CREATABLES">CREATABLES</a></dd>
<dd id="Presto.Parser.ALTERABLES" class="variable"><a href="../parser.html#Parser.ALTERABLES">ALTERABLES</a></dd>
<dd id="Presto.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd>
<dd id="Presto.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd>
<dd id="Presto.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd>
<dd id="Presto.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd>
<dd id="Presto.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd>
<dd id="Presto.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd>
<dd id="Presto.Parser.FUNC_TOKENS" class="variable"><a href="../parser.html#Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd>
<dd id="Presto.Parser.CONJUNCTION" class="variable"><a href="../parser.html#Parser.CONJUNCTION">CONJUNCTION</a></dd>
<dd id="Presto.Parser.ASSIGNMENT" class="variable"><a href="../parser.html#Parser.ASSIGNMENT">ASSIGNMENT</a></dd>
<dd id="Presto.Parser.DISJUNCTION" class="variable"><a href="../parser.html#Parser.DISJUNCTION">DISJUNCTION</a></dd>
<dd id="Presto.Parser.EQUALITY" class="variable"><a href="../parser.html#Parser.EQUALITY">EQUALITY</a></dd>
<dd id="Presto.Parser.COMPARISON" class="variable"><a href="../parser.html#Parser.COMPARISON">COMPARISON</a></dd>
<dd id="Presto.Parser.BITWISE" class="variable"><a href="../parser.html#Parser.BITWISE">BITWISE</a></dd>
<dd id="Presto.Parser.TERM" class="variable"><a href="../parser.html#Parser.TERM">TERM</a></dd>
<dd id="Presto.Parser.FACTOR" class="variable"><a href="../parser.html#Parser.FACTOR">FACTOR</a></dd>
<dd id="Presto.Parser.EXPONENT" class="variable"><a href="../parser.html#Parser.EXPONENT">EXPONENT</a></dd>
<dd id="Presto.Parser.TIMES" class="variable"><a href="../parser.html#Parser.TIMES">TIMES</a></dd>
<dd id="Presto.Parser.TIMESTAMPS" class="variable"><a href="../parser.html#Parser.TIMESTAMPS">TIMESTAMPS</a></dd>
<dd id="Presto.Parser.SET_OPERATIONS" class="variable"><a href="../parser.html#Parser.SET_OPERATIONS">SET_OPERATIONS</a></dd>
<dd id="Presto.Parser.JOIN_METHODS" class="variable"><a href="../parser.html#Parser.JOIN_METHODS">JOIN_METHODS</a></dd>
<dd id="Presto.Parser.JOIN_SIDES" class="variable"><a href="../parser.html#Parser.JOIN_SIDES">JOIN_SIDES</a></dd>
<dd id="Presto.Parser.JOIN_KINDS" class="variable"><a href="../parser.html#Parser.JOIN_KINDS">JOIN_KINDS</a></dd>
<dd id="Presto.Parser.JOIN_HINTS" class="variable"><a href="../parser.html#Parser.JOIN_HINTS">JOIN_HINTS</a></dd>
<dd id="Presto.Parser.LAMBDAS" class="variable"><a href="../parser.html#Parser.LAMBDAS">LAMBDAS</a></dd>
<dd id="Presto.Parser.COLUMN_OPERATORS" class="variable"><a href="../parser.html#Parser.COLUMN_OPERATORS">COLUMN_OPERATORS</a></dd>
<dd id="Presto.Parser.EXPRESSION_PARSERS" class="variable"><a href="../parser.html#Parser.EXPRESSION_PARSERS">EXPRESSION_PARSERS</a></dd>
<dd id="Presto.Parser.STATEMENT_PARSERS" class="variable"><a href="../parser.html#Parser.STATEMENT_PARSERS">STATEMENT_PARSERS</a></dd>
<dd id="Presto.Parser.UNARY_PARSERS" class="variable"><a href="../parser.html#Parser.UNARY_PARSERS">UNARY_PARSERS</a></dd>
<dd id="Presto.Parser.STRING_PARSERS" class="variable"><a href="../parser.html#Parser.STRING_PARSERS">STRING_PARSERS</a></dd>
<dd id="Presto.Parser.NUMERIC_PARSERS" class="variable"><a href="../parser.html#Parser.NUMERIC_PARSERS">NUMERIC_PARSERS</a></dd>
<dd id="Presto.Parser.PRIMARY_PARSERS" class="variable"><a href="../parser.html#Parser.PRIMARY_PARSERS">PRIMARY_PARSERS</a></dd>
<dd id="Presto.Parser.PLACEHOLDER_PARSERS" class="variable"><a href="../parser.html#Parser.PLACEHOLDER_PARSERS">PLACEHOLDER_PARSERS</a></dd>
<dd id="Presto.Parser.RANGE_PARSERS" class="variable"><a href="../parser.html#Parser.RANGE_PARSERS">RANGE_PARSERS</a></dd>
<dd id="Presto.Parser.PROPERTY_PARSERS" class="variable"><a href="../parser.html#Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd>
<dd id="Presto.Parser.CONSTRAINT_PARSERS" class="variable"><a href="../parser.html#Parser.CONSTRAINT_PARSERS">CONSTRAINT_PARSERS</a></dd>
<dd id="Presto.Parser.ALTER_PARSERS" class="variable"><a href="../parser.html#Parser.ALTER_PARSERS">ALTER_PARSERS</a></dd>
<dd id="Presto.Parser.ALTER_ALTER_PARSERS" class="variable"><a href="../parser.html#Parser.ALTER_ALTER_PARSERS">ALTER_ALTER_PARSERS</a></dd>
<dd id="Presto.Parser.SCHEMA_UNNAMED_CONSTRAINTS" class="variable"><a href="../parser.html#Parser.SCHEMA_UNNAMED_CONSTRAINTS">SCHEMA_UNNAMED_CONSTRAINTS</a></dd>
<dd id="Presto.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="../parser.html#Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd>
<dd id="Presto.Parser.INVALID_FUNC_NAME_TOKENS" class="variable"><a href="../parser.html#Parser.INVALID_FUNC_NAME_TOKENS">INVALID_FUNC_NAME_TOKENS</a></dd>
<dd id="Presto.Parser.FUNCTIONS_WITH_ALIASED_ARGS" class="variable"><a href="../parser.html#Parser.FUNCTIONS_WITH_ALIASED_ARGS">FUNCTIONS_WITH_ALIASED_ARGS</a></dd>
<dd id="Presto.Parser.KEY_VALUE_DEFINITIONS" class="variable"><a href="../parser.html#Parser.KEY_VALUE_DEFINITIONS">KEY_VALUE_DEFINITIONS</a></dd>
<dd id="Presto.Parser.QUERY_MODIFIER_PARSERS" class="variable"><a href="../parser.html#Parser.QUERY_MODIFIER_PARSERS">QUERY_MODIFIER_PARSERS</a></dd>
<dd id="Presto.Parser.SET_PARSERS" class="variable"><a href="../parser.html#Parser.SET_PARSERS">SET_PARSERS</a></dd>
<dd id="Presto.Parser.SHOW_PARSERS" class="variable"><a href="../parser.html#Parser.SHOW_PARSERS">SHOW_PARSERS</a></dd>
<dd id="Presto.Parser.TYPE_LITERAL_PARSERS" class="variable"><a href="../parser.html#Parser.TYPE_LITERAL_PARSERS">TYPE_LITERAL_PARSERS</a></dd>
<dd id="Presto.Parser.TYPE_CONVERTERS" class="variable"><a href="../parser.html#Parser.TYPE_CONVERTERS">TYPE_CONVERTERS</a></dd>
<dd id="Presto.Parser.DDL_SELECT_TOKENS" class="variable"><a href="../parser.html#Parser.DDL_SELECT_TOKENS">DDL_SELECT_TOKENS</a></dd>
<dd id="Presto.Parser.PRE_VOLATILE_TOKENS" class="variable"><a href="../parser.html#Parser.PRE_VOLATILE_TOKENS">PRE_VOLATILE_TOKENS</a></dd>
<dd id="Presto.Parser.TRANSACTION_KIND" class="variable"><a href="../parser.html#Parser.TRANSACTION_KIND">TRANSACTION_KIND</a></dd>
<dd id="Presto.Parser.TRANSACTION_CHARACTERISTICS" class="variable"><a href="../parser.html#Parser.TRANSACTION_CHARACTERISTICS">TRANSACTION_CHARACTERISTICS</a></dd>
<dd id="Presto.Parser.CONFLICT_ACTIONS" class="variable"><a href="../parser.html#Parser.CONFLICT_ACTIONS">CONFLICT_ACTIONS</a></dd>
<dd id="Presto.Parser.CREATE_SEQUENCE" class="variable"><a href="../parser.html#Parser.CREATE_SEQUENCE">CREATE_SEQUENCE</a></dd>
<dd id="Presto.Parser.ISOLATED_LOADING_OPTIONS" class="variable"><a href="../parser.html#Parser.ISOLATED_LOADING_OPTIONS">ISOLATED_LOADING_OPTIONS</a></dd>
<dd id="Presto.Parser.USABLES" class="variable"><a href="../parser.html#Parser.USABLES">USABLES</a></dd>
<dd id="Presto.Parser.CAST_ACTIONS" class="variable"><a href="../parser.html#Parser.CAST_ACTIONS">CAST_ACTIONS</a></dd>
<dd id="Presto.Parser.SCHEMA_BINDING_OPTIONS" class="variable"><a href="../parser.html#Parser.SCHEMA_BINDING_OPTIONS">SCHEMA_BINDING_OPTIONS</a></dd>
<dd id="Presto.Parser.KEY_CONSTRAINT_OPTIONS" class="variable"><a href="../parser.html#Parser.KEY_CONSTRAINT_OPTIONS">KEY_CONSTRAINT_OPTIONS</a></dd>
<dd id="Presto.Parser.INSERT_ALTERNATIVES" class="variable"><a href="../parser.html#Parser.INSERT_ALTERNATIVES">INSERT_ALTERNATIVES</a></dd>
<dd id="Presto.Parser.CLONE_KEYWORDS" class="variable"><a href="../parser.html#Parser.CLONE_KEYWORDS">CLONE_KEYWORDS</a></dd>
<dd id="Presto.Parser.HISTORICAL_DATA_PREFIX" class="variable"><a href="../parser.html#Parser.HISTORICAL_DATA_PREFIX">HISTORICAL_DATA_PREFIX</a></dd>
<dd id="Presto.Parser.HISTORICAL_DATA_KIND" class="variable"><a href="../parser.html#Parser.HISTORICAL_DATA_KIND">HISTORICAL_DATA_KIND</a></dd>
<dd id="Presto.Parser.OPCLASS_FOLLOW_KEYWORDS" class="variable"><a href="../parser.html#Parser.OPCLASS_FOLLOW_KEYWORDS">OPCLASS_FOLLOW_KEYWORDS</a></dd>
<dd id="Presto.Parser.OPTYPE_FOLLOW_TOKENS" class="variable"><a href="../parser.html#Parser.OPTYPE_FOLLOW_TOKENS">OPTYPE_FOLLOW_TOKENS</a></dd>
<dd id="Presto.Parser.TABLE_INDEX_HINT_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_INDEX_HINT_TOKENS">TABLE_INDEX_HINT_TOKENS</a></dd>
<dd id="Presto.Parser.VIEW_ATTRIBUTES" class="variable"><a href="../parser.html#Parser.VIEW_ATTRIBUTES">VIEW_ATTRIBUTES</a></dd>
<dd id="Presto.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Presto.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Presto.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Presto.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="Presto.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Presto.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Presto.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Presto.Parser.NULL_TOKENS" class="variable"><a href="../parser.html#Parser.NULL_TOKENS">NULL_TOKENS</a></dd>
<dd id="Presto.Parser.UNNEST_OFFSET_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UNNEST_OFFSET_ALIAS_TOKENS">UNNEST_OFFSET_ALIAS_TOKENS</a></dd>
<dd id="Presto.Parser.SELECT_START_TOKENS" class="variable"><a href="../parser.html#Parser.SELECT_START_TOKENS">SELECT_START_TOKENS</a></dd>
<dd id="Presto.Parser.COPY_INTO_VARLEN_OPTIONS" class="variable"><a href="../parser.html#Parser.COPY_INTO_VARLEN_OPTIONS">COPY_INTO_VARLEN_OPTIONS</a></dd>
<dd id="Presto.Parser.IS_JSON_PREDICATE_KIND" class="variable"><a href="../parser.html#Parser.IS_JSON_PREDICATE_KIND">IS_JSON_PREDICATE_KIND</a></dd>
<dd id="Presto.Parser.ODBC_DATETIME_LITERALS" class="variable"><a href="../parser.html#Parser.ODBC_DATETIME_LITERALS">ODBC_DATETIME_LITERALS</a></dd>
<dd id="Presto.Parser.ON_CONDITION_TOKENS" class="variable"><a href="../parser.html#Parser.ON_CONDITION_TOKENS">ON_CONDITION_TOKENS</a></dd>
<dd id="Presto.Parser.PRIVILEGE_FOLLOW_TOKENS" class="variable"><a href="../parser.html#Parser.PRIVILEGE_FOLLOW_TOKENS">PRIVILEGE_FOLLOW_TOKENS</a></dd>
<dd id="Presto.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
<dd id="Presto.Parser.PREFIXED_PIVOT_COLUMNS" class="variable"><a href="../parser.html#Parser.PREFIXED_PIVOT_COLUMNS">PREFIXED_PIVOT_COLUMNS</a></dd>
<dd id="Presto.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="Presto.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Presto.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="Presto.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="Presto.Parser.DEFAULT_SAMPLING_METHOD" class="variable"><a href="../parser.html#Parser.DEFAULT_SAMPLING_METHOD">DEFAULT_SAMPLING_METHOD</a></dd>
<dd id="Presto.Parser.SET_REQUIRES_ASSIGNMENT_DELIMITER" class="variable"><a href="../parser.html#Parser.SET_REQUIRES_ASSIGNMENT_DELIMITER">SET_REQUIRES_ASSIGNMENT_DELIMITER</a></dd>
<dd id="Presto.Parser.TRIM_PATTERN_FIRST" class="variable"><a href="../parser.html#Parser.TRIM_PATTERN_FIRST">TRIM_PATTERN_FIRST</a></dd>
<dd id="Presto.Parser.STRING_ALIASES" class="variable"><a href="../parser.html#Parser.STRING_ALIASES">STRING_ALIASES</a></dd>
<dd id="Presto.Parser.MODIFIERS_ATTACHED_TO_SET_OP" class="variable"><a href="../parser.html#Parser.MODIFIERS_ATTACHED_TO_SET_OP">MODIFIERS_ATTACHED_TO_SET_OP</a></dd>
<dd id="Presto.Parser.SET_OP_MODIFIERS" class="variable"><a href="../parser.html#Parser.SET_OP_MODIFIERS">SET_OP_MODIFIERS</a></dd>
<dd id="Presto.Parser.NO_PAREN_IF_COMMANDS" class="variable"><a href="../parser.html#Parser.NO_PAREN_IF_COMMANDS">NO_PAREN_IF_COMMANDS</a></dd>
<dd id="Presto.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="Presto.Parser.COLON_IS_VARIANT_EXTRACT" class="variable"><a href="../parser.html#Parser.COLON_IS_VARIANT_EXTRACT">COLON_IS_VARIANT_EXTRACT</a></dd>
<dd id="Presto.Parser.SUPPORTS_IMPLICIT_UNNEST" class="variable"><a href="../parser.html#Parser.SUPPORTS_IMPLICIT_UNNEST">SUPPORTS_IMPLICIT_UNNEST</a></dd>
<dd id="Presto.Parser.INTERVAL_SPANS" class="variable"><a href="../parser.html#Parser.INTERVAL_SPANS">INTERVAL_SPANS</a></dd>
<dd id="Presto.Parser.SUPPORTS_PARTITION_SELECTION" class="variable"><a href="../parser.html#Parser.SUPPORTS_PARTITION_SELECTION">SUPPORTS_PARTITION_SELECTION</a></dd>
<dd id="Presto.Parser.error_level" class="variable"><a href="../parser.html#Parser.error_level">error_level</a></dd>
<dd id="Presto.Parser.error_message_context" class="variable"><a href="../parser.html#Parser.error_message_context">error_message_context</a></dd>
<dd id="Presto.Parser.max_errors" class="variable"><a href="../parser.html#Parser.max_errors">max_errors</a></dd>
<dd id="Presto.Parser.dialect" class="variable"><a href="../parser.html#Parser.dialect">dialect</a></dd>
<dd id="Presto.Parser.reset" class="function"><a href="../parser.html#Parser.reset">reset</a></dd>
<dd id="Presto.Parser.parse" class="function"><a href="../parser.html#Parser.parse">parse</a></dd>
<dd id="Presto.Parser.parse_into" class="function"><a href="../parser.html#Parser.parse_into">parse_into</a></dd>
<dd id="Presto.Parser.check_errors" class="function"><a href="../parser.html#Parser.check_errors">check_errors</a></dd>
<dd id="Presto.Parser.raise_error" class="function"><a href="../parser.html#Parser.raise_error">raise_error</a></dd>
<dd id="Presto.Parser.expression" class="function"><a href="../parser.html#Parser.expression">expression</a></dd>
<dd id="Presto.Parser.validate_expression" class="function"><a href="../parser.html#Parser.validate_expression">validate_expression</a></dd>
<dd id="Presto.Parser.errors" class="variable"><a href="../parser.html#Parser.errors">errors</a></dd>
<dd id="Presto.Parser.sql" class="variable"><a href="../parser.html#Parser.sql">sql</a></dd>
</div>
</dl>
</div>
</section>
<section id="Presto.Generator">
<input id="Presto.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">Presto.Generator</span><wbr>(<span class="base"><a href="../generator.html#Generator">sqlglot.generator.Generator</a></span>):
<label class="view-source-button" for="Presto.Generator-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator-317"><a href="#Presto.Generator-317"><span class="linenos">317</span></a> <span class="k">class</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="Presto.Generator-318"><a href="#Presto.Generator-318"><span class="linenos">318</span></a> <span class="n">INTERVAL_ALLOWS_PLURAL_FORM</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-319"><a href="#Presto.Generator-319"><span class="linenos">319</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-320"><a href="#Presto.Generator-320"><span class="linenos">320</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-321"><a href="#Presto.Generator-321"><span class="linenos">321</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-322"><a href="#Presto.Generator-322"><span class="linenos">322</span></a> <span class="n">IS_BOOL_ALLOWED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-323"><a href="#Presto.Generator-323"><span class="linenos">323</span></a> <span class="n">TZ_TO_WITH_TIME_ZONE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto.Generator-324"><a href="#Presto.Generator-324"><span class="linenos">324</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-325"><a href="#Presto.Generator-325"><span class="linenos">325</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="Presto.Generator-326"><a href="#Presto.Generator-326"><span class="linenos">326</span></a> <span class="n">LIMIT_ONLY_LITERALS</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto.Generator-327"><a href="#Presto.Generator-327"><span class="linenos">327</span></a> <span class="n">SUPPORTS_SINGLE_ARG_CONCAT</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-328"><a href="#Presto.Generator-328"><span class="linenos">328</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto.Generator-329"><a href="#Presto.Generator-329"><span class="linenos">329</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-330"><a href="#Presto.Generator-330"><span class="linenos">330</span></a> <span class="n">SUPPORTS_TO_NUMBER</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-331"><a href="#Presto.Generator-331"><span class="linenos">331</span></a> <span class="n">HEX_FUNC</span> <span class="o">=</span> <span class="s2">&quot;TO_HEX&quot;</span>
</span><span id="Presto.Generator-332"><a href="#Presto.Generator-332"><span class="linenos">332</span></a> <span class="n">PARSE_JSON_NAME</span> <span class="o">=</span> <span class="s2">&quot;JSON_PARSE&quot;</span>
</span><span id="Presto.Generator-333"><a href="#Presto.Generator-333"><span class="linenos">333</span></a> <span class="n">PAD_FILL_PATTERN_IS_REQUIRED</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto.Generator-334"><a href="#Presto.Generator-334"><span class="linenos">334</span></a> <span class="n">EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-335"><a href="#Presto.Generator-335"><span class="linenos">335</span></a>
</span><span id="Presto.Generator-336"><a href="#Presto.Generator-336"><span class="linenos">336</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto.Generator-337"><a href="#Presto.Generator-337"><span class="linenos">337</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="Presto.Generator-338"><a href="#Presto.Generator-338"><span class="linenos">338</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</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="Presto.Generator-339"><a href="#Presto.Generator-339"><span class="linenos">339</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="Presto.Generator-340"><a href="#Presto.Generator-340"><span class="linenos">340</span></a> <span class="p">}</span>
</span><span id="Presto.Generator-341"><a href="#Presto.Generator-341"><span class="linenos">341</span></a>
</span><span id="Presto.Generator-342"><a href="#Presto.Generator-342"><span class="linenos">342</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto.Generator-343"><a href="#Presto.Generator-343"><span class="linenos">343</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="Presto.Generator-344"><a href="#Presto.Generator-344"><span class="linenos">344</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;INTEGER&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-345"><a href="#Presto.Generator-345"><span class="linenos">345</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;REAL&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-346"><a href="#Presto.Generator-346"><span class="linenos">346</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">BINARY</span><span class="p">:</span> <span class="s2">&quot;VARBINARY&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-347"><a href="#Presto.Generator-347"><span class="linenos">347</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;VARCHAR&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-348"><a href="#Presto.Generator-348"><span class="linenos">348</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">TIMETZ</span><span class="p">:</span> <span class="s2">&quot;TIME&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-349"><a href="#Presto.Generator-349"><span class="linenos">349</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-350"><a href="#Presto.Generator-350"><span class="linenos">350</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;ROW&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-351"><a href="#Presto.Generator-351"><span class="linenos">351</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-352"><a href="#Presto.Generator-352"><span class="linenos">352</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;TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-353"><a href="#Presto.Generator-353"><span class="linenos">353</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">HLLSKETCH</span><span class="p">:</span> <span class="s2">&quot;HYPERLOGLOG&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-354"><a href="#Presto.Generator-354"><span class="linenos">354</span></a> <span class="p">}</span>
</span><span id="Presto.Generator-355"><a href="#Presto.Generator-355"><span class="linenos">355</span></a>
</span><span id="Presto.Generator-356"><a href="#Presto.Generator-356"><span class="linenos">356</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto.Generator-357"><a href="#Presto.Generator-357"><span class="linenos">357</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="Presto.Generator-358"><a href="#Presto.Generator-358"><span class="linenos">358</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;ARBITRARY&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-359"><a href="#Presto.Generator-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxQuantile</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;APPROX_PERCENTILE&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-360"><a href="#Presto.Generator-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAX_BY&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-361"><a href="#Presto.Generator-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MIN_BY&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-362"><a href="#Presto.Generator-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</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;ARRAY[</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">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="Presto.Generator-363"><a href="#Presto.Generator-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAny</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ANY_MATCH&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-364"><a href="#Presto.Generator-364"><span class="linenos">364</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;CONCAT&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-365"><a href="#Presto.Generator-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CONTAINS&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-366"><a href="#Presto.Generator-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;CARDINALITY&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-367"><a href="#Presto.Generator-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayToString</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_JOIN&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-368"><a href="#Presto.Generator-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayUniqueAgg</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SET_AGG&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-369"><a href="#Presto.Generator-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;AT_TIMEZONE&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-370"><a href="#Presto.Generator-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</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;BITWISE_AND&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="Presto.Generator-371"><a href="#Presto.Generator-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</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="Presto.Generator-372"><a href="#Presto.Generator-372"><span class="linenos">372</span></a> <span class="s2">&quot;BITWISE_ARITHMETIC_SHIFT_LEFT&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><span id="Presto.Generator-373"><a href="#Presto.Generator-373"><span class="linenos">373</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-374"><a href="#Presto.Generator-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</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;BITWISE_NOT&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="Presto.Generator-375"><a href="#Presto.Generator-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</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;BITWISE_OR&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="Presto.Generator-376"><a href="#Presto.Generator-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</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="Presto.Generator-377"><a href="#Presto.Generator-377"><span class="linenos">377</span></a> <span class="s2">&quot;BITWISE_ARITHMETIC_SHIFT_RIGHT&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><span id="Presto.Generator-378"><a href="#Presto.Generator-378"><span class="linenos">378</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-379"><a href="#Presto.Generator-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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;BITWISE_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><span id="Presto.Generator-380"><a href="#Presto.Generator-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">epoch_cast_to_ts</span><span class="p">]),</span>
</span><span id="Presto.Generator-381"><a href="#Presto.Generator-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</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;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-382"><a href="#Presto.Generator-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-383"><a href="#Presto.Generator-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</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="Presto.Generator-384"><a href="#Presto.Generator-384"><span class="linenos">384</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">unit_to_str</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">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto.Generator-385"><a href="#Presto.Generator-385"><span class="linenos">385</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-386"><a href="#Presto.Generator-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-387"><a href="#Presto.Generator-387"><span class="linenos">387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto.Generator-388"><a href="#Presto.Generator-388"><span class="linenos">388</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(DATE_FORMAT(</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="n">Presto</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-389"><a href="#Presto.Generator-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">,</span> <span class="n">negate_interval</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="Presto.Generator-390"><a href="#Presto.Generator-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</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">func</span><span class="p">(</span><span class="s1">&#39;DAY_OF_WEEK&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2"> % 7) + 1)&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-391"><a href="#Presto.Generator-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeekIso</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAY_OF_WEEK&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-392"><a href="#Presto.Generator-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</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">encode_decode_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="s2">&quot;FROM_UTF8&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-393"><a href="#Presto.Generator-393"><span class="linenos">393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto.Generator-394"><a href="#Presto.Generator-394"><span class="linenos">394</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(DATE_PARSE(CAST(</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"> AS VARCHAR), </span><span class="si">{</span><span class="n">Presto</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-395"><a href="#Presto.Generator-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</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">encode_decode_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="s2">&quot;TO_UTF8&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-396"><a href="#Presto.Generator-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</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;FORMAT=&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-397"><a href="#Presto.Generator-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">First</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-398"><a href="#Presto.Generator-398"><span class="linenos">398</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FirstValue</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-399"><a href="#Presto.Generator-399"><span class="linenos">399</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FromTimeZone</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto.Generator-400"><a href="#Presto.Generator-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;WITH_TIMEZONE(</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;zone&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AT TIME ZONE &#39;UTC&#39;&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-401"><a href="#Presto.Generator-401"><span class="linenos">401</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">:</span> <span class="n">sequence_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-402"><a href="#Presto.Generator-402"><span class="linenos">402</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateDateArray</span><span class="p">:</span> <span class="n">sequence_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-403"><a href="#Presto.Generator-403"><span class="linenos">403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unalias_group</span><span class="p">]),</span>
</span><span id="Presto.Generator-404"><a href="#Presto.Generator-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</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="Presto.Generator-405"><a href="#Presto.Generator-405"><span class="linenos">405</span></a> <span class="s2">&quot;ARRAY_JOIN&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;ARRAY_AGG&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;separator&quot;</span><span class="p">)</span>
</span><span id="Presto.Generator-406"><a href="#Presto.Generator-406"><span class="linenos">406</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-407"><a href="#Presto.Generator-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">:</span> <span class="n">if_sql</span><span class="p">(),</span>
</span><span id="Presto.Generator-408"><a href="#Presto.Generator-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">:</span> <span class="n">no_ilike_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-409"><a href="#Presto.Generator-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Initcap</span><span class="p">:</span> <span class="n">_initcap_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-410"><a href="#Presto.Generator-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</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">jsonextract_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
</span><span id="Presto.Generator-411"><a href="#Presto.Generator-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Last</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-412"><a href="#Presto.Generator-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastValue</span><span class="p">:</span> <span class="n">_first_last_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-413"><a href="#Presto.Generator-413"><span class="linenos">413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</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;LAST_DAY_OF_MONTH&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="Presto.Generator-414"><a href="#Presto.Generator-414"><span class="linenos">414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="n">_explode_to_unnest_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-415"><a href="#Presto.Generator-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">:</span> <span class="n">left_to_substring_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-416"><a href="#Presto.Generator-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Levenshtein</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LEVENSHTEIN_DISTANCE&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-417"><a href="#Presto.Generator-417"><span class="linenos">417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-418"><a href="#Presto.Generator-418"><span class="linenos">418</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-419"><a href="#Presto.Generator-419"><span class="linenos">419</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="Presto.Generator-420"><a href="#Presto.Generator-420"><span class="linenos">420</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="Presto.Generator-421"><a href="#Presto.Generator-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-422"><a href="#Presto.Generator-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Right</span><span class="p">:</span> <span class="n">right_to_substring_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-423"><a href="#Presto.Generator-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-424"><a href="#Presto.Generator-424"><span class="linenos">424</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">:</span> <span class="n">_schema_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-425"><a href="#Presto.Generator-425"><span class="linenos">425</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="Presto.Generator-426"><a href="#Presto.Generator-426"><span class="linenos">426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span>
</span><span id="Presto.Generator-427"><a href="#Presto.Generator-427"><span class="linenos">427</span></a> <span class="p">[</span>
</span><span id="Presto.Generator-428"><a href="#Presto.Generator-428"><span class="linenos">428</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span>
</span><span id="Presto.Generator-429"><a href="#Presto.Generator-429"><span class="linenos">429</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_distinct_on</span><span class="p">,</span>
</span><span id="Presto.Generator-430"><a href="#Presto.Generator-430"><span class="linenos">430</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">explode_to_unnest</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
</span><span id="Presto.Generator-431"><a href="#Presto.Generator-431"><span class="linenos">431</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span>
</span><span id="Presto.Generator-432"><a href="#Presto.Generator-432"><span class="linenos">432</span></a> <span class="p">]</span>
</span><span id="Presto.Generator-433"><a href="#Presto.Generator-433"><span class="linenos">433</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-434"><a href="#Presto.Generator-434"><span class="linenos">434</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_no_sort_array</span><span class="p">,</span>
</span><span id="Presto.Generator-435"><a href="#Presto.Generator-435"><span class="linenos">435</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">str_position_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">generate_instance</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
</span><span id="Presto.Generator-436"><a href="#Presto.Generator-436"><span class="linenos">436</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</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;CAST(</span><span class="si">{</span><span class="n">_str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-437"><a href="#Presto.Generator-437"><span class="linenos">437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToMap</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;SPLIT_TO_MAP&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-438"><a href="#Presto.Generator-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">_str_to_time_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-439"><a href="#Presto.Generator-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-440"><a href="#Presto.Generator-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unnest_generate_series</span><span class="p">]),</span>
</span><span id="Presto.Generator-441"><a href="#Presto.Generator-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-442"><a href="#Presto.Generator-442"><span class="linenos">442</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">(</span><span class="s2">&quot;DATE_ADD&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-443"><a href="#Presto.Generator-443"><span class="linenos">443</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><span id="Presto.Generator-444"><a href="#Presto.Generator-444"><span class="linenos">444</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-445"><a href="#Presto.Generator-445"><span class="linenos">445</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="Presto.Generator-446"><a href="#Presto.Generator-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</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="Presto.Generator-447"><a href="#Presto.Generator-447"><span class="linenos">447</span></a> <span class="s2">&quot;TO_UNIXTIME&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;DATE_PARSE&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">Presto</span><span class="o">.</span><span class="n">TIME_FORMAT</span><span class="p">)</span>
</span><span id="Presto.Generator-448"><a href="#Presto.Generator-448"><span class="linenos">448</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-449"><a href="#Presto.Generator-449"><span class="linenos">449</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 class="s2">&quot;DATE_FORMAT&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><span id="Presto.Generator-450"><a href="#Presto.Generator-450"><span class="linenos">450</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;TO_UNIXTIME&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-451"><a href="#Presto.Generator-451"><span class="linenos">451</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</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;DATE_FORMAT&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><span id="Presto.Generator-452"><a href="#Presto.Generator-452"><span class="linenos">452</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">epoch_cast_to_ts</span><span class="p">]),</span>
</span><span id="Presto.Generator-453"><a href="#Presto.Generator-453"><span class="linenos">453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto.Generator-454"><a href="#Presto.Generator-454"><span class="linenos">454</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</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"> AS VARCHAR), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-455"><a href="#Presto.Generator-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-456"><a href="#Presto.Generator-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_ts_or_ds_diff_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-457"><a href="#Presto.Generator-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">:</span> <span class="n">_ts_or_ds_to_date_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-458"><a href="#Presto.Generator-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Unhex</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;FROM_HEX&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-459"><a href="#Presto.Generator-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto.Generator-460"><a href="#Presto.Generator-460"><span class="linenos">460</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;DATE_FORMAT(FROM_UNIXTIME(</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">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-461"><a href="#Presto.Generator-461"><span class="linenos">461</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="Presto.Generator-462"><a href="#Presto.Generator-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
</span><span id="Presto.Generator-463"><a href="#Presto.Generator-463"><span class="linenos">463</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(FROM_UNIXTIME(</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">) AS VARCHAR)&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-464"><a href="#Presto.Generator-464"><span class="linenos">464</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-465"><a href="#Presto.Generator-465"><span class="linenos">465</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_recursive_cte_column_names</span><span class="p">]),</span>
</span><span id="Presto.Generator-466"><a href="#Presto.Generator-466"><span class="linenos">466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span>
</span><span id="Presto.Generator-467"><a href="#Presto.Generator-467"><span class="linenos">467</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">remove_within_group_for_percentiles</span><span class="p">]</span>
</span><span id="Presto.Generator-468"><a href="#Presto.Generator-468"><span class="linenos">468</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-469"><a href="#Presto.Generator-469"><span class="linenos">469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
</span><span id="Presto.Generator-470"><a href="#Presto.Generator-470"><span class="linenos">470</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="Presto.Generator-471"><a href="#Presto.Generator-471"><span class="linenos">471</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="Presto.Generator-472"><a href="#Presto.Generator-472"><span class="linenos">472</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="Presto.Generator-473"><a href="#Presto.Generator-473"><span class="linenos">473</span></a> <span class="p">}</span>
</span><span id="Presto.Generator-474"><a href="#Presto.Generator-474"><span class="linenos">474</span></a>
</span><span id="Presto.Generator-475"><a href="#Presto.Generator-475"><span class="linenos">475</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Presto.Generator-476"><a href="#Presto.Generator-476"><span class="linenos">476</span></a> <span class="s2">&quot;alter&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-477"><a href="#Presto.Generator-477"><span class="linenos">477</span></a> <span class="s2">&quot;and&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-478"><a href="#Presto.Generator-478"><span class="linenos">478</span></a> <span class="s2">&quot;as&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-479"><a href="#Presto.Generator-479"><span class="linenos">479</span></a> <span class="s2">&quot;between&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-480"><a href="#Presto.Generator-480"><span class="linenos">480</span></a> <span class="s2">&quot;by&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-481"><a href="#Presto.Generator-481"><span class="linenos">481</span></a> <span class="s2">&quot;case&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-482"><a href="#Presto.Generator-482"><span class="linenos">482</span></a> <span class="s2">&quot;cast&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-483"><a href="#Presto.Generator-483"><span class="linenos">483</span></a> <span class="s2">&quot;constraint&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-484"><a href="#Presto.Generator-484"><span class="linenos">484</span></a> <span class="s2">&quot;create&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-485"><a href="#Presto.Generator-485"><span class="linenos">485</span></a> <span class="s2">&quot;cross&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-486"><a href="#Presto.Generator-486"><span class="linenos">486</span></a> <span class="s2">&quot;current_time&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-487"><a href="#Presto.Generator-487"><span class="linenos">487</span></a> <span class="s2">&quot;current_timestamp&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-488"><a href="#Presto.Generator-488"><span class="linenos">488</span></a> <span class="s2">&quot;deallocate&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-489"><a href="#Presto.Generator-489"><span class="linenos">489</span></a> <span class="s2">&quot;delete&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-490"><a href="#Presto.Generator-490"><span class="linenos">490</span></a> <span class="s2">&quot;describe&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-491"><a href="#Presto.Generator-491"><span class="linenos">491</span></a> <span class="s2">&quot;distinct&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-492"><a href="#Presto.Generator-492"><span class="linenos">492</span></a> <span class="s2">&quot;drop&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-493"><a href="#Presto.Generator-493"><span class="linenos">493</span></a> <span class="s2">&quot;else&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-494"><a href="#Presto.Generator-494"><span class="linenos">494</span></a> <span class="s2">&quot;end&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-495"><a href="#Presto.Generator-495"><span class="linenos">495</span></a> <span class="s2">&quot;escape&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-496"><a href="#Presto.Generator-496"><span class="linenos">496</span></a> <span class="s2">&quot;except&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-497"><a href="#Presto.Generator-497"><span class="linenos">497</span></a> <span class="s2">&quot;execute&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-498"><a href="#Presto.Generator-498"><span class="linenos">498</span></a> <span class="s2">&quot;exists&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-499"><a href="#Presto.Generator-499"><span class="linenos">499</span></a> <span class="s2">&quot;extract&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-500"><a href="#Presto.Generator-500"><span class="linenos">500</span></a> <span class="s2">&quot;false&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-501"><a href="#Presto.Generator-501"><span class="linenos">501</span></a> <span class="s2">&quot;for&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-502"><a href="#Presto.Generator-502"><span class="linenos">502</span></a> <span class="s2">&quot;from&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-503"><a href="#Presto.Generator-503"><span class="linenos">503</span></a> <span class="s2">&quot;full&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-504"><a href="#Presto.Generator-504"><span class="linenos">504</span></a> <span class="s2">&quot;group&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-505"><a href="#Presto.Generator-505"><span class="linenos">505</span></a> <span class="s2">&quot;having&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-506"><a href="#Presto.Generator-506"><span class="linenos">506</span></a> <span class="s2">&quot;in&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-507"><a href="#Presto.Generator-507"><span class="linenos">507</span></a> <span class="s2">&quot;inner&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-508"><a href="#Presto.Generator-508"><span class="linenos">508</span></a> <span class="s2">&quot;insert&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-509"><a href="#Presto.Generator-509"><span class="linenos">509</span></a> <span class="s2">&quot;intersect&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-510"><a href="#Presto.Generator-510"><span class="linenos">510</span></a> <span class="s2">&quot;into&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-511"><a href="#Presto.Generator-511"><span class="linenos">511</span></a> <span class="s2">&quot;is&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-512"><a href="#Presto.Generator-512"><span class="linenos">512</span></a> <span class="s2">&quot;join&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-513"><a href="#Presto.Generator-513"><span class="linenos">513</span></a> <span class="s2">&quot;left&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-514"><a href="#Presto.Generator-514"><span class="linenos">514</span></a> <span class="s2">&quot;like&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-515"><a href="#Presto.Generator-515"><span class="linenos">515</span></a> <span class="s2">&quot;natural&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-516"><a href="#Presto.Generator-516"><span class="linenos">516</span></a> <span class="s2">&quot;not&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-517"><a href="#Presto.Generator-517"><span class="linenos">517</span></a> <span class="s2">&quot;null&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-518"><a href="#Presto.Generator-518"><span class="linenos">518</span></a> <span class="s2">&quot;on&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-519"><a href="#Presto.Generator-519"><span class="linenos">519</span></a> <span class="s2">&quot;or&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-520"><a href="#Presto.Generator-520"><span class="linenos">520</span></a> <span class="s2">&quot;order&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-521"><a href="#Presto.Generator-521"><span class="linenos">521</span></a> <span class="s2">&quot;outer&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-522"><a href="#Presto.Generator-522"><span class="linenos">522</span></a> <span class="s2">&quot;prepare&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-523"><a href="#Presto.Generator-523"><span class="linenos">523</span></a> <span class="s2">&quot;right&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-524"><a href="#Presto.Generator-524"><span class="linenos">524</span></a> <span class="s2">&quot;select&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-525"><a href="#Presto.Generator-525"><span class="linenos">525</span></a> <span class="s2">&quot;table&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-526"><a href="#Presto.Generator-526"><span class="linenos">526</span></a> <span class="s2">&quot;then&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-527"><a href="#Presto.Generator-527"><span class="linenos">527</span></a> <span class="s2">&quot;true&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-528"><a href="#Presto.Generator-528"><span class="linenos">528</span></a> <span class="s2">&quot;union&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-529"><a href="#Presto.Generator-529"><span class="linenos">529</span></a> <span class="s2">&quot;using&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-530"><a href="#Presto.Generator-530"><span class="linenos">530</span></a> <span class="s2">&quot;values&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-531"><a href="#Presto.Generator-531"><span class="linenos">531</span></a> <span class="s2">&quot;when&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-532"><a href="#Presto.Generator-532"><span class="linenos">532</span></a> <span class="s2">&quot;where&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-533"><a href="#Presto.Generator-533"><span class="linenos">533</span></a> <span class="s2">&quot;with&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-534"><a href="#Presto.Generator-534"><span class="linenos">534</span></a> <span class="p">}</span>
</span><span id="Presto.Generator-535"><a href="#Presto.Generator-535"><span class="linenos">535</span></a>
</span><span id="Presto.Generator-536"><a href="#Presto.Generator-536"><span class="linenos">536</span></a> <span class="k">def</span> <span class="nf">md5_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">MD5</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-537"><a href="#Presto.Generator-537"><span class="linenos">537</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="Presto.Generator-538"><a href="#Presto.Generator-538"><span class="linenos">538</span></a>
</span><span id="Presto.Generator-539"><a href="#Presto.Generator-539"><span class="linenos">539</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
</span><span id="Presto.Generator-540"><a href="#Presto.Generator-540"><span class="linenos">540</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="Presto.Generator-541"><a href="#Presto.Generator-541"><span class="linenos">541</span></a>
</span><span id="Presto.Generator-542"><a href="#Presto.Generator-542"><span class="linenos">542</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="Presto.Generator-543"><a href="#Presto.Generator-543"><span class="linenos">543</span></a>
</span><span id="Presto.Generator-544"><a href="#Presto.Generator-544"><span class="linenos">544</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</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">TEXT_TYPES</span><span class="p">):</span>
</span><span id="Presto.Generator-545"><a href="#Presto.Generator-545"><span class="linenos">545</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</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">charset</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="s2">&quot;utf-8&quot;</span><span class="p">))</span>
</span><span id="Presto.Generator-546"><a href="#Presto.Generator-546"><span class="linenos">546</span></a>
</span><span id="Presto.Generator-547"><a href="#Presto.Generator-547"><span class="linenos">547</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;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;TO_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="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="Presto.Generator-548"><a href="#Presto.Generator-548"><span class="linenos">548</span></a>
</span><span id="Presto.Generator-549"><a href="#Presto.Generator-549"><span class="linenos">549</span></a> <span class="k">def</span> <span class="nf">strtounix_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">StrToUnix</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-550"><a href="#Presto.Generator-550"><span class="linenos">550</span></a> <span class="c1"># Since `TO_UNIXTIME` requires a `TIMESTAMP`, we need to parse the argument into one.</span>
</span><span id="Presto.Generator-551"><a href="#Presto.Generator-551"><span class="linenos">551</span></a> <span class="c1"># To do this, we first try to `DATE_PARSE` it, but since this can fail when there&#39;s a</span>
</span><span id="Presto.Generator-552"><a href="#Presto.Generator-552"><span class="linenos">552</span></a> <span class="c1"># timezone involved, we wrap it in a `TRY` call and use `PARSE_DATETIME` as a fallback,</span>
</span><span id="Presto.Generator-553"><a href="#Presto.Generator-553"><span class="linenos">553</span></a> <span class="c1"># which seems to be using the same time mapping as Hive, as per:</span>
</span><span id="Presto.Generator-554"><a href="#Presto.Generator-554"><span class="linenos">554</span></a> <span class="c1"># https://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html</span>
</span><span id="Presto.Generator-555"><a href="#Presto.Generator-555"><span class="linenos">555</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="Presto.Generator-556"><a href="#Presto.Generator-556"><span class="linenos">556</span></a> <span class="n">value_as_text</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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><span id="Presto.Generator-557"><a href="#Presto.Generator-557"><span class="linenos">557</span></a> <span class="n">value_as_timestamp</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="Presto.Generator-558"><a href="#Presto.Generator-558"><span class="linenos">558</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="Presto.Generator-559"><a href="#Presto.Generator-559"><span class="linenos">559</span></a> <span class="p">)</span>
</span><span id="Presto.Generator-560"><a href="#Presto.Generator-560"><span class="linenos">560</span></a>
</span><span id="Presto.Generator-561"><a href="#Presto.Generator-561"><span class="linenos">561</span></a> <span class="n">parse_without_tz</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;DATE_PARSE&quot;</span><span class="p">,</span> <span class="n">value_as_text</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">expression</span><span class="p">))</span>
</span><span id="Presto.Generator-562"><a href="#Presto.Generator-562"><span class="linenos">562</span></a>
</span><span id="Presto.Generator-563"><a href="#Presto.Generator-563"><span class="linenos">563</span></a> <span class="n">formatted_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="Presto.Generator-564"><a href="#Presto.Generator-564"><span class="linenos">564</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">,</span> <span class="n">value_as_timestamp</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">expression</span><span class="p">)</span>
</span><span id="Presto.Generator-565"><a href="#Presto.Generator-565"><span class="linenos">565</span></a> <span class="p">)</span>
</span><span id="Presto.Generator-566"><a href="#Presto.Generator-566"><span class="linenos">566</span></a> <span class="n">parse_with_tz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="Presto.Generator-567"><a href="#Presto.Generator-567"><span class="linenos">567</span></a> <span class="s2">&quot;PARSE_DATETIME&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-568"><a href="#Presto.Generator-568"><span class="linenos">568</span></a> <span class="n">formatted_value</span><span class="p">,</span>
</span><span id="Presto.Generator-569"><a href="#Presto.Generator-569"><span class="linenos">569</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_TRIE</span><span class="p">),</span>
</span><span id="Presto.Generator-570"><a href="#Presto.Generator-570"><span class="linenos">570</span></a> <span class="p">)</span>
</span><span id="Presto.Generator-571"><a href="#Presto.Generator-571"><span class="linenos">571</span></a> <span class="n">coalesced</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;COALESCE&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;TRY&quot;</span><span class="p">,</span> <span class="n">parse_without_tz</span><span class="p">),</span> <span class="n">parse_with_tz</span><span class="p">)</span>
</span><span id="Presto.Generator-572"><a href="#Presto.Generator-572"><span class="linenos">572</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;TO_UNIXTIME&quot;</span><span class="p">,</span> <span class="n">coalesced</span><span class="p">)</span>
</span><span id="Presto.Generator-573"><a href="#Presto.Generator-573"><span class="linenos">573</span></a>
</span><span id="Presto.Generator-574"><a href="#Presto.Generator-574"><span class="linenos">574</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-575"><a href="#Presto.Generator-575"><span class="linenos">575</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;safe&quot;</span><span class="p">):</span>
</span><span id="Presto.Generator-576"><a href="#Presto.Generator-576"><span class="linenos">576</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="Presto.Generator-577"><a href="#Presto.Generator-577"><span class="linenos">577</span></a> <span class="s2">&quot;ELEMENT_AT&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator-578"><a href="#Presto.Generator-578"><span class="linenos">578</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="Presto.Generator-579"><a href="#Presto.Generator-579"><span class="linenos">579</span></a> <span class="n">seq_get</span><span class="p">(</span>
</span><span id="Presto.Generator-580"><a href="#Presto.Generator-580"><span class="linenos">580</span></a> <span class="n">apply_index_offset</span><span class="p">(</span>
</span><span id="Presto.Generator-581"><a href="#Presto.Generator-581"><span class="linenos">581</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="Presto.Generator-582"><a href="#Presto.Generator-582"><span class="linenos">582</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span>
</span><span id="Presto.Generator-583"><a href="#Presto.Generator-583"><span class="linenos">583</span></a> <span class="mi">1</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;offset&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
</span><span id="Presto.Generator-584"><a href="#Presto.Generator-584"><span class="linenos">584</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-585"><a href="#Presto.Generator-585"><span class="linenos">585</span></a> <span class="mi">0</span><span class="p">,</span>
</span><span id="Presto.Generator-586"><a href="#Presto.Generator-586"><span class="linenos">586</span></a> <span class="p">),</span>
</span><span id="Presto.Generator-587"><a href="#Presto.Generator-587"><span class="linenos">587</span></a> <span class="p">)</span>
</span><span id="Presto.Generator-588"><a href="#Presto.Generator-588"><span class="linenos">588</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto.Generator-589"><a href="#Presto.Generator-589"><span class="linenos">589</span></a>
</span><span id="Presto.Generator-590"><a href="#Presto.Generator-590"><span class="linenos">590</span></a> <span class="k">def</span> <span class="nf">struct_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">Struct</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-591"><a href="#Presto.Generator-591"><span class="linenos">591</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="Presto.Generator-592"><a href="#Presto.Generator-592"><span class="linenos">592</span></a>
</span><span id="Presto.Generator-593"><a href="#Presto.Generator-593"><span class="linenos">593</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto.Generator-594"><a href="#Presto.Generator-594"><span class="linenos">594</span></a> <span class="n">values</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto.Generator-595"><a href="#Presto.Generator-595"><span class="linenos">595</span></a> <span class="n">schema</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto.Generator-596"><a href="#Presto.Generator-596"><span class="linenos">596</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator-597"><a href="#Presto.Generator-597"><span class="linenos">597</span></a>
</span><span id="Presto.Generator-598"><a href="#Presto.Generator-598"><span class="linenos">598</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="Presto.Generator-599"><a href="#Presto.Generator-599"><span class="linenos">599</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</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="Presto.Generator-600"><a href="#Presto.Generator-600"><span class="linenos">600</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">type</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">UNKNOWN</span><span class="p">):</span>
</span><span id="Presto.Generator-601"><a href="#Presto.Generator-601"><span class="linenos">601</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto.Generator-602"><a href="#Presto.Generator-602"><span class="linenos">602</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Presto.Generator-603"><a href="#Presto.Generator-603"><span class="linenos">603</span></a> <span class="n">schema</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">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="o">.</span><span class="n">type</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Presto.Generator-604"><a href="#Presto.Generator-604"><span class="linenos">604</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">))</span>
</span><span id="Presto.Generator-605"><a href="#Presto.Generator-605"><span class="linenos">605</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Presto.Generator-606"><a href="#Presto.Generator-606"><span class="linenos">606</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">))</span>
</span><span id="Presto.Generator-607"><a href="#Presto.Generator-607"><span class="linenos">607</span></a>
</span><span id="Presto.Generator-608"><a href="#Presto.Generator-608"><span class="linenos">608</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
</span><span id="Presto.Generator-609"><a href="#Presto.Generator-609"><span class="linenos">609</span></a>
</span><span id="Presto.Generator-610"><a href="#Presto.Generator-610"><span class="linenos">610</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">size</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">!=</span> <span class="n">size</span><span class="p">:</span>
</span><span id="Presto.Generator-611"><a href="#Presto.Generator-611"><span class="linenos">611</span></a> <span class="k">if</span> <span class="n">unknown_type</span><span class="p">:</span>
</span><span id="Presto.Generator-612"><a href="#Presto.Generator-612"><span class="linenos">612</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="Presto.Generator-613"><a href="#Presto.Generator-613"><span class="linenos">613</span></a> <span class="s2">&quot;Cannot convert untyped key-value definitions (try annotate_types).&quot;</span>
</span><span id="Presto.Generator-614"><a href="#Presto.Generator-614"><span class="linenos">614</span></a> <span class="p">)</span>
</span><span id="Presto.Generator-615"><a href="#Presto.Generator-615"><span class="linenos">615</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;ROW&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">)</span>
</span><span id="Presto.Generator-616"><a href="#Presto.Generator-616"><span class="linenos">616</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;CAST(ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">values</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span>
</span><span id="Presto.Generator-617"><a href="#Presto.Generator-617"><span class="linenos">617</span></a>
</span><span id="Presto.Generator-618"><a href="#Presto.Generator-618"><span class="linenos">618</span></a> <span class="k">def</span> <span class="nf">interval_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">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-619"><a href="#Presto.Generator-619"><span class="linenos">619</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;WEEK&quot;</span><span class="p">):</span>
</span><span id="Presto.Generator-620"><a href="#Presto.Generator-620"><span class="linenos">620</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> * INTERVAL &#39;7&#39; DAY)&quot;</span>
</span><span id="Presto.Generator-621"><a href="#Presto.Generator-621"><span class="linenos">621</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto.Generator-622"><a href="#Presto.Generator-622"><span class="linenos">622</span></a>
</span><span id="Presto.Generator-623"><a href="#Presto.Generator-623"><span class="linenos">623</span></a> <span class="k">def</span> <span class="nf">transaction_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">Transaction</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-624"><a href="#Presto.Generator-624"><span class="linenos">624</span></a> <span class="n">modes</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;modes&quot;</span><span class="p">)</span>
</span><span id="Presto.Generator-625"><a href="#Presto.Generator-625"><span class="linenos">625</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">modes</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">modes</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="Presto.Generator-626"><a href="#Presto.Generator-626"><span class="linenos">626</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;START TRANSACTION</span><span class="si">{</span><span class="n">modes</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span id="Presto.Generator-627"><a href="#Presto.Generator-627"><span class="linenos">627</span></a>
</span><span id="Presto.Generator-628"><a href="#Presto.Generator-628"><span class="linenos">628</span></a> <span class="k">def</span> <span class="nf">offset_limit_modifiers</span><span class="p">(</span>
</span><span id="Presto.Generator-629"><a href="#Presto.Generator-629"><span class="linenos">629</span></a> <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="n">fetch</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">limit</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">Fetch</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">]</span>
</span><span id="Presto.Generator-630"><a href="#Presto.Generator-630"><span class="linenos">630</span></a> <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="Presto.Generator-631"><a href="#Presto.Generator-631"><span class="linenos">631</span></a> <span class="k">return</span> <span class="p">[</span>
</span><span id="Presto.Generator-632"><a href="#Presto.Generator-632"><span class="linenos">632</span></a> <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;offset&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator-633"><a href="#Presto.Generator-633"><span class="linenos">633</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">limit</span><span class="p">),</span>
</span><span id="Presto.Generator-634"><a href="#Presto.Generator-634"><span class="linenos">634</span></a> <span class="p">]</span>
</span><span id="Presto.Generator-635"><a href="#Presto.Generator-635"><span class="linenos">635</span></a>
</span><span id="Presto.Generator-636"><a href="#Presto.Generator-636"><span class="linenos">636</span></a> <span class="k">def</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="Presto.Generator-637"><a href="#Presto.Generator-637"><span class="linenos">637</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="Presto.Generator-638"><a href="#Presto.Generator-638"><span class="linenos">638</span></a><span class="sd"> Presto doesn&#39;t support CREATE VIEW with expressions (ex: `CREATE VIEW x (cola)` then `(cola)` is the expression),</span>
</span><span id="Presto.Generator-639"><a href="#Presto.Generator-639"><span class="linenos">639</span></a><span class="sd"> so we need to remove them</span>
</span><span id="Presto.Generator-640"><a href="#Presto.Generator-640"><span class="linenos">640</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Presto.Generator-641"><a href="#Presto.Generator-641"><span class="linenos">641</span></a> <span class="n">kind</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;kind&quot;</span><span class="p">]</span>
</span><span id="Presto.Generator-642"><a href="#Presto.Generator-642"><span class="linenos">642</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto.Generator-643"><a href="#Presto.Generator-643"><span class="linenos">643</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;VIEW&quot;</span> <span class="ow">and</span> <span class="n">schema</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="Presto.Generator-644"><a href="#Presto.Generator-644"><span class="linenos">644</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span><span id="Presto.Generator-645"><a href="#Presto.Generator-645"><span class="linenos">645</span></a> <span class="k">return</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="Presto.Generator-646"><a href="#Presto.Generator-646"><span class="linenos">646</span></a>
</span><span id="Presto.Generator-647"><a href="#Presto.Generator-647"><span class="linenos">647</span></a> <span class="k">def</span> <span class="nf">delete_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">Delete</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-648"><a href="#Presto.Generator-648"><span class="linenos">648</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="Presto.Generator-649"><a href="#Presto.Generator-649"><span class="linenos">649</span></a><span class="sd"> Presto only supports DELETE FROM for a single table without an alias, so we need</span>
</span><span id="Presto.Generator-650"><a href="#Presto.Generator-650"><span class="linenos">650</span></a><span class="sd"> to remove the unnecessary parts. If the original DELETE statement contains more</span>
</span><span id="Presto.Generator-651"><a href="#Presto.Generator-651"><span class="linenos">651</span></a><span class="sd"> than one table to be deleted, we can&#39;t safely map it 1-1 to a Presto statement.</span>
</span><span id="Presto.Generator-652"><a href="#Presto.Generator-652"><span class="linenos">652</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Presto.Generator-653"><a href="#Presto.Generator-653"><span class="linenos">653</span></a> <span class="n">tables</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;tables&quot;</span><span class="p">)</span> <span class="ow">or</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="Presto.Generator-654"><a href="#Presto.Generator-654"><span class="linenos">654</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tables</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Presto.Generator-655"><a href="#Presto.Generator-655"><span class="linenos">655</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto.Generator-656"><a href="#Presto.Generator-656"><span class="linenos">656</span></a>
</span><span id="Presto.Generator-657"><a href="#Presto.Generator-657"><span class="linenos">657</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">tables</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Presto.Generator-658"><a href="#Presto.Generator-658"><span class="linenos">658</span></a> <span class="n">expression</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">table</span><span class="p">)</span>
</span><span id="Presto.Generator-659"><a href="#Presto.Generator-659"><span class="linenos">659</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;tables&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span><span id="Presto.Generator-660"><a href="#Presto.Generator-660"><span class="linenos">660</span></a>
</span><span id="Presto.Generator-661"><a href="#Presto.Generator-661"><span class="linenos">661</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</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="Presto.Generator-662"><a href="#Presto.Generator-662"><span class="linenos">662</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">table</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="Presto.Generator-663"><a href="#Presto.Generator-663"><span class="linenos">663</span></a> <span class="k">if</span> <span class="n">table_alias</span><span class="p">:</span>
</span><span id="Presto.Generator-664"><a href="#Presto.Generator-664"><span class="linenos">664</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="Presto.Generator-665"><a href="#Presto.Generator-665"><span class="linenos">665</span></a> <span class="n">expression</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">Delete</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">unqualify_columns</span><span class="p">))</span>
</span><span id="Presto.Generator-666"><a href="#Presto.Generator-666"><span class="linenos">666</span></a>
</span><span id="Presto.Generator-667"><a href="#Presto.Generator-667"><span class="linenos">667</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto.Generator-668"><a href="#Presto.Generator-668"><span class="linenos">668</span></a>
</span><span id="Presto.Generator-669"><a href="#Presto.Generator-669"><span class="linenos">669</span></a> <span class="k">def</span> <span class="nf">jsonextract_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">JSONExtract</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator-670"><a href="#Presto.Generator-670"><span class="linenos">670</span></a> <span class="n">is_json_extract</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;variant_extract_is_json_extract&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
</span><span id="Presto.Generator-671"><a href="#Presto.Generator-671"><span class="linenos">671</span></a>
</span><span id="Presto.Generator-672"><a href="#Presto.Generator-672"><span class="linenos">672</span></a> <span class="c1"># Generate JSON_EXTRACT unless the user has configured that a Snowflake / Databricks</span>
</span><span id="Presto.Generator-673"><a href="#Presto.Generator-673"><span class="linenos">673</span></a> <span class="c1"># VARIANT extract (e.g. col:x.y) should map to dot notation (i.e ROW access) in Presto/Trino</span>
</span><span id="Presto.Generator-674"><a href="#Presto.Generator-674"><span class="linenos">674</span></a> <span class="k">if</span> <span class="ow">not</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;variant_extract&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">is_json_extract</span><span class="p">:</span>
</span><span id="Presto.Generator-675"><a href="#Presto.Generator-675"><span class="linenos">675</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="Presto.Generator-676"><a href="#Presto.Generator-676"><span class="linenos">676</span></a> <span class="s2">&quot;JSON_EXTRACT&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">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="Presto.Generator-677"><a href="#Presto.Generator-677"><span class="linenos">677</span></a> <span class="p">)</span>
</span><span id="Presto.Generator-678"><a href="#Presto.Generator-678"><span class="linenos">678</span></a>
</span><span id="Presto.Generator-679"><a href="#Presto.Generator-679"><span class="linenos">679</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="Presto.Generator-680"><a href="#Presto.Generator-680"><span class="linenos">680</span></a>
</span><span id="Presto.Generator-681"><a href="#Presto.Generator-681"><span class="linenos">681</span></a> <span class="c1"># Convert the JSONPath extraction `JSON_EXTRACT(col, &#39;$.x.y) to a ROW access col.x.y</span>
</span><span id="Presto.Generator-682"><a href="#Presto.Generator-682"><span class="linenos">682</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto.Generator-683"><a href="#Presto.Generator-683"><span class="linenos">683</span></a> <span class="k">for</span> <span class="n">path_key</span> <span class="ow">in</span> <span class="n">expression</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">1</span><span class="p">:]:</span>
</span><span id="Presto.Generator-684"><a href="#Presto.Generator-684"><span class="linenos">684</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path_key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">):</span>
</span><span id="Presto.Generator-685"><a href="#Presto.Generator-685"><span class="linenos">685</span></a> <span class="c1"># Cannot transpile subscripts, wildcards etc to dot notation</span>
</span><span id="Presto.Generator-686"><a href="#Presto.Generator-686"><span class="linenos">686</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="Presto.Generator-687"><a href="#Presto.Generator-687"><span class="linenos">687</span></a> <span class="sa">f</span><span class="s2">&quot;Cannot transpile JSONPath segment &#39;</span><span class="si">{</span><span class="n">path_key</span><span class="si">}</span><span class="s2">&#39; to ROW access&quot;</span>
</span><span id="Presto.Generator-688"><a href="#Presto.Generator-688"><span class="linenos">688</span></a> <span class="p">)</span>
</span><span id="Presto.Generator-689"><a href="#Presto.Generator-689"><span class="linenos">689</span></a> <span class="k">continue</span>
</span><span id="Presto.Generator-690"><a href="#Presto.Generator-690"><span class="linenos">690</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">path_key</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto.Generator-691"><a href="#Presto.Generator-691"><span class="linenos">691</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
</span><span id="Presto.Generator-692"><a href="#Presto.Generator-692"><span class="linenos">692</span></a> <span class="n">key</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">&quot;&#39;</span>
</span><span id="Presto.Generator-693"><a href="#Presto.Generator-693"><span class="linenos">693</span></a> <span class="n">segments</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="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Presto.Generator-694"><a href="#Presto.Generator-694"><span class="linenos">694</span></a>
</span><span id="Presto.Generator-695"><a href="#Presto.Generator-695"><span class="linenos">695</span></a> <span class="n">expr</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">segments</span><span class="p">)</span>
</span><span id="Presto.Generator-696"><a href="#Presto.Generator-696"><span class="linenos">696</span></a>
</span><span id="Presto.Generator-697"><a href="#Presto.Generator-697"><span class="linenos">697</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="n">expr</span><span class="si">}</span><span class="s2">&quot;</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="Presto.Generator.INTERVAL_ALLOWS_PLURAL_FORM" class="classattr">
<div class="attr variable">
<span class="name">INTERVAL_ALLOWS_PLURAL_FORM</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.Generator.INTERVAL_ALLOWS_PLURAL_FORM"></a>
</div>
<div id="Presto.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="#Presto.Generator.JOIN_HINTS"></a>
</div>
<div id="Presto.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="#Presto.Generator.TABLE_HINTS"></a>
</div>
<div id="Presto.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="#Presto.Generator.QUERY_HINTS"></a>
</div>
<div id="Presto.Generator.IS_BOOL_ALLOWED" class="classattr">
<div class="attr variable">
<span class="name">IS_BOOL_ALLOWED</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.Generator.IS_BOOL_ALLOWED"></a>
</div>
<div id="Presto.Generator.TZ_TO_WITH_TIME_ZONE" class="classattr">
<div class="attr variable">
<span class="name">TZ_TO_WITH_TIME_ZONE</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#Presto.Generator.TZ_TO_WITH_TIME_ZONE"></a>
</div>
<div id="Presto.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="#Presto.Generator.NVL2_SUPPORTED"></a>
</div>
<div id="Presto.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="#Presto.Generator.STRUCT_DELIMITER"></a>
</div>
<div id="Presto.Generator.LIMIT_ONLY_LITERALS" class="classattr">
<div class="attr variable">
<span class="name">LIMIT_ONLY_LITERALS</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#Presto.Generator.LIMIT_ONLY_LITERALS"></a>
</div>
<div id="Presto.Generator.SUPPORTS_SINGLE_ARG_CONCAT" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_SINGLE_ARG_CONCAT</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.Generator.SUPPORTS_SINGLE_ARG_CONCAT"></a>
</div>
<div id="Presto.Generator.LIKE_PROPERTY_INSIDE_SCHEMA" class="classattr">
<div class="attr variable">
<span class="name">LIKE_PROPERTY_INSIDE_SCHEMA</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#Presto.Generator.LIKE_PROPERTY_INSIDE_SCHEMA"></a>
</div>
<div id="Presto.Generator.MULTI_ARG_DISTINCT" class="classattr">
<div class="attr variable">
<span class="name">MULTI_ARG_DISTINCT</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.Generator.MULTI_ARG_DISTINCT"></a>
</div>
<div id="Presto.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="#Presto.Generator.SUPPORTS_TO_NUMBER"></a>
</div>
<div id="Presto.Generator.HEX_FUNC" class="classattr">
<div class="attr variable">
<span class="name">HEX_FUNC</span> =
<span class="default_value">&#39;TO_HEX&#39;</span>
</div>
<a class="headerlink" href="#Presto.Generator.HEX_FUNC"></a>
</div>
<div id="Presto.Generator.PARSE_JSON_NAME" class="classattr">
<div class="attr variable">
<span class="name">PARSE_JSON_NAME</span> =
<span class="default_value">&#39;JSON_PARSE&#39;</span>
</div>
<a class="headerlink" href="#Presto.Generator.PARSE_JSON_NAME"></a>
</div>
<div id="Presto.Generator.PAD_FILL_PATTERN_IS_REQUIRED" class="classattr">
<div class="attr variable">
<span class="name">PAD_FILL_PATTERN_IS_REQUIRED</span> =
<span class="default_value">True</span>
</div>
<a class="headerlink" href="#Presto.Generator.PAD_FILL_PATTERN_IS_REQUIRED"></a>
</div>
<div id="Presto.Generator.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE" class="classattr">
<div class="attr variable">
<span class="name">EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.Generator.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE"></a>
</div>
<div id="Presto.Generator.PROPERTIES_LOCATION" class="classattr">
<div class="attr variable">
<span class="name">PROPERTIES_LOCATION</span> =
<input id="Presto.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="Presto.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#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#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.UNSUPPORTED: &#39;UNSUPPORTED&#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_WITH: &#39;POST_WITH&#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#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#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_SCHEMA: &#39;POST_SCHEMA&#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#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#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;}</span>
</div>
<a class="headerlink" href="#Presto.Generator.PROPERTIES_LOCATION"></a>
</div>
<div id="Presto.Generator.TYPE_MAPPING" class="classattr">
<div class="attr variable">
<span class="name">TYPE_MAPPING</span> =
<input id="Presto.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="Presto.Generator.TYPE_MAPPING-view-value"></label><span class="default_value">{&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;TEXT&#39;, &lt;Type.LONGTEXT: &#39;LONGTEXT&#39;&gt;: &#39;TEXT&#39;, &lt;Type.TINYTEXT: &#39;TINYTEXT&#39;&gt;: &#39;TEXT&#39;, &lt;Type.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;: &#39;BLOB&#39;, &lt;Type.LONGBLOB: &#39;LONGBLOB&#39;&gt;: &#39;BLOB&#39;, &lt;Type.TINYBLOB: &#39;TINYBLOB&#39;&gt;: &#39;BLOB&#39;, &lt;Type.INET: &#39;INET&#39;&gt;: &#39;INET&#39;, &lt;Type.ROWVERSION: &#39;ROWVERSION&#39;&gt;: &#39;VARBINARY&#39;, &lt;Type.INT: &#39;INT&#39;&gt;: &#39;INTEGER&#39;, &lt;Type.FLOAT: &#39;FLOAT&#39;&gt;: &#39;REAL&#39;, &lt;Type.BINARY: &#39;BINARY&#39;&gt;: &#39;VARBINARY&#39;, &lt;Type.TEXT: &#39;TEXT&#39;&gt;: &#39;VARCHAR&#39;, &lt;Type.TIMETZ: &#39;TIMETZ&#39;&gt;: &#39;TIME&#39;, &lt;Type.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;: &#39;TIMESTAMP&#39;, &lt;Type.STRUCT: &#39;STRUCT&#39;&gt;: &#39;ROW&#39;, &lt;Type.DATETIME: &#39;DATETIME&#39;&gt;: &#39;TIMESTAMP&#39;, &lt;Type.DATETIME64: &#39;DATETIME64&#39;&gt;: &#39;TIMESTAMP&#39;, &lt;Type.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;: &#39;HYPERLOGLOG&#39;}</span>
</div>
<a class="headerlink" href="#Presto.Generator.TYPE_MAPPING"></a>
</div>
<div id="Presto.Generator.TRANSFORMS" class="classattr">
<div class="attr variable">
<span class="name">TRANSFORMS</span> =
<input id="Presto.Generator.TRANSFORMS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.Generator.TRANSFORMS-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>&#39;&gt;: &lt;function &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#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>&#39;&gt;: &lt;function &lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</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#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#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#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#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#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#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>&#39;&gt;: &lt;function Generator.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TagColumnConstraint">sqlglot.expressions.TagColumnConstraint</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#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 Generator.&lt;lambda&gt;&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#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#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#ApproxQuantile">sqlglot.expressions.ApproxQuantile</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 rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Array">sqlglot.expressions.Array</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</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#ArrayContains">sqlglot.expressions.ArrayContains</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#AtTimeZone">sqlglot.expressions.AtTimeZone</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseAnd">sqlglot.expressions.BitwiseAnd</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseLeftShift">sqlglot.expressions.BitwiseLeftShift</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseNot">sqlglot.expressions.BitwiseNot</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseOr">sqlglot.expressions.BitwiseOr</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseRightShift">sqlglot.expressions.BitwiseRightShift</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>&#39;&gt;: &lt;function preprocess.&lt;locals&gt;._to_sql&gt;, &lt;class &#39;<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>&#39;&gt;: &lt;function _date_delta_sql.&lt;locals&gt;._delta_sql&gt;, &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>&#39;&gt;: &lt;function datestrtodate_sql&gt;, &lt;class &#39;<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>&#39;&gt;: &lt;function _date_delta_sql.&lt;locals&gt;._delta_sql&gt;, &lt;class &#39;<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DayOfWeekIso">sqlglot.expressions.DayOfWeekIso</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#FileFormatProperty">sqlglot.expressions.FileFormatProperty</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#First">sqlglot.expressions.First</a>&#39;&gt;: &lt;function _first_last_sql&gt;, &lt;class &#39;<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>&#39;&gt;: &lt;function _first_last_sql&gt;, &lt;class &#39;<a href="../expressions.html#FromTimeZone">sqlglot.expressions.FromTimeZone</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>&#39;&gt;: &lt;function sequence_sql&gt;, &lt;class &#39;<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>&#39;&gt;: &lt;function sequence_sql&gt;, &lt;class &#39;<a href="../expressions.html#Group">sqlglot.expressions.Group</a>&#39;&gt;: &lt;function preprocess.&lt;locals&gt;._to_sql&gt;, &lt;class &#39;<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#If">sqlglot.expressions.If</a>&#39;&gt;: &lt;function if_sql.&lt;locals&gt;._if_sql&gt;, &lt;class &#39;<a href="../expressions.html#ILike">sqlglot.expressions.ILike</a>&#39;&gt;: &lt;function no_ilike_sql&gt;, &lt;class &#39;<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>&#39;&gt;: &lt;function _initcap_sql&gt;, &lt;class &#39;<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Last">sqlglot.expressions.Last</a>&#39;&gt;: &lt;function _first_last_sql&gt;, &lt;class &#39;<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>&#39;&gt;: &lt;function _first_last_sql&gt;, &lt;class &#39;<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Lateral">sqlglot.expressions.Lateral</a>&#39;&gt;: &lt;function _explode_to_unnest_sql&gt;, &lt;class &#39;<a href="../expressions.html#Left">sqlglot.expressions.Left</a>&#39;&gt;: &lt;function left_to_substring_sql&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;, &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&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#RegexpExtract">sqlglot.expressions.RegexpExtract</a>&#39;&gt;: &lt;function regexp_extract_sql&gt;, &lt;class &#39;<a href="../expressions.html#Right">sqlglot.expressions.Right</a>&#39;&gt;: &lt;function right_to_substring_sql&gt;, &lt;class &#39;<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>&#39;&gt;: &lt;function no_safe_divide_sql&gt;, &lt;class &#39;<a href="../expressions.html#Schema">sqlglot.expressions.Schema</a>&#39;&gt;: &lt;function _schema_sql&gt;, &lt;class &#39;<a href="../expressions.html#SchemaCommentProperty">sqlglot.expressions.SchemaCommentProperty</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#Select">sqlglot.expressions.Select</a>&#39;&gt;: &lt;function preprocess.&lt;locals&gt;._to_sql&gt;, &lt;class &#39;<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>&#39;&gt;: &lt;function _no_sort_array&gt;, &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>&#39;&gt;: &lt;function _str_to_time_sql&gt;, &lt;class &#39;<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>&#39;&gt;: &lt;function struct_extract_sql&gt;, &lt;class &#39;<a href="../expressions.html#Table">sqlglot.expressions.Table</a>&#39;&gt;: &lt;function preprocess.&lt;locals&gt;._to_sql&gt;, &lt;class &#39;<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>&#39;&gt;: &lt;function no_timestamp_sql&gt;, &lt;class &#39;<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>&#39;&gt;: &lt;function _date_delta_sql.&lt;locals&gt;._delta_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#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>&#39;&gt;: &lt;function timestrtotime_sql&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#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>&#39;&gt;: &lt;function preprocess.&lt;locals&gt;._to_sql&gt;, &lt;class &#39;<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>&#39;&gt;: &lt;function _ts_or_ds_add_sql&gt;, &lt;class &#39;<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>&#39;&gt;: &lt;function _ts_or_ds_diff_sql&gt;, &lt;class &#39;<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>&#39;&gt;: &lt;function _ts_or_ds_to_date_sql&gt;, &lt;class &#39;<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&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#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>&#39;&gt;: &lt;function <a href="#Presto.Generator">Presto.Generator</a>.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;: &lt;function rename_func.&lt;locals&gt;.&lt;lambda&gt;&gt;, &lt;class &#39;<a href="../expressions.html#With">sqlglot.expressions.With</a>&#39;&gt;: &lt;function preprocess.&lt;locals&gt;._to_sql&gt;, &lt;class &#39;<a href="../expressions.html#WithinGroup">sqlglot.expressions.WithinGroup</a>&#39;&gt;: &lt;function preprocess.&lt;locals&gt;._to_sql&gt;, &lt;class &#39;<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>&#39;&gt;: &lt;function bool_xor_sql&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#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;}</span>
</div>
<a class="headerlink" href="#Presto.Generator.TRANSFORMS"></a>
</div>
<div id="Presto.Generator.RESERVED_KEYWORDS" class="classattr">
<div class="attr variable">
<span class="name">RESERVED_KEYWORDS</span> =
<input id="Presto.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Presto.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{&#39;cast&#39;, &#39;false&#39;, &#39;between&#39;, &#39;true&#39;, &#39;table&#39;, &#39;not&#39;, &#39;with&#39;, &#39;execute&#39;, &#39;order&#39;, &#39;null&#39;, &#39;prepare&#39;, &#39;using&#39;, &#39;intersect&#39;, &#39;join&#39;, &#39;into&#39;, &#39;natural&#39;, &#39;distinct&#39;, &#39;is&#39;, &#39;delete&#39;, &#39;escape&#39;, &#39;and&#39;, &#39;from&#39;, &#39;insert&#39;, &#39;on&#39;, &#39;outer&#39;, &#39;where&#39;, &#39;full&#39;, &#39;current_time&#39;, &#39;group&#39;, &#39;for&#39;, &#39;alter&#39;, &#39;values&#39;, &#39;as&#39;, &#39;end&#39;, &#39;union&#39;, &#39;except&#39;, &#39;create&#39;, &#39;inner&#39;, &#39;extract&#39;, &#39;constraint&#39;, &#39;like&#39;, &#39;describe&#39;, &#39;in&#39;, &#39;current_timestamp&#39;, &#39;then&#39;, &#39;case&#39;, &#39;else&#39;, &#39;exists&#39;, &#39;left&#39;, &#39;right&#39;, &#39;or&#39;, &#39;select&#39;, &#39;deallocate&#39;, &#39;having&#39;, &#39;by&#39;, &#39;cross&#39;, &#39;when&#39;, &#39;drop&#39;}</span>
</div>
<a class="headerlink" href="#Presto.Generator.RESERVED_KEYWORDS"></a>
</div>
<div id="Presto.Generator.md5_sql" class="classattr">
<input id="Presto.Generator.md5_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">md5_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#MD5">sqlglot.expressions.MD5</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.md5_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.md5_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.md5_sql-536"><a href="#Presto.Generator.md5_sql-536"><span class="linenos">536</span></a> <span class="k">def</span> <span class="nf">md5_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">MD5</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.md5_sql-537"><a href="#Presto.Generator.md5_sql-537"><span class="linenos">537</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="Presto.Generator.md5_sql-538"><a href="#Presto.Generator.md5_sql-538"><span class="linenos">538</span></a>
</span><span id="Presto.Generator.md5_sql-539"><a href="#Presto.Generator.md5_sql-539"><span class="linenos">539</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
</span><span id="Presto.Generator.md5_sql-540"><a href="#Presto.Generator.md5_sql-540"><span class="linenos">540</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="Presto.Generator.md5_sql-541"><a href="#Presto.Generator.md5_sql-541"><span class="linenos">541</span></a>
</span><span id="Presto.Generator.md5_sql-542"><a href="#Presto.Generator.md5_sql-542"><span class="linenos">542</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">this</span><span class="p">)</span>
</span><span id="Presto.Generator.md5_sql-543"><a href="#Presto.Generator.md5_sql-543"><span class="linenos">543</span></a>
</span><span id="Presto.Generator.md5_sql-544"><a href="#Presto.Generator.md5_sql-544"><span class="linenos">544</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</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">TEXT_TYPES</span><span class="p">):</span>
</span><span id="Presto.Generator.md5_sql-545"><a href="#Presto.Generator.md5_sql-545"><span class="linenos">545</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</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">charset</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="s2">&quot;utf-8&quot;</span><span class="p">))</span>
</span><span id="Presto.Generator.md5_sql-546"><a href="#Presto.Generator.md5_sql-546"><span class="linenos">546</span></a>
</span><span id="Presto.Generator.md5_sql-547"><a href="#Presto.Generator.md5_sql-547"><span class="linenos">547</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;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;TO_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="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></pre></div>
</div>
<div id="Presto.Generator.strtounix_sql" class="classattr">
<input id="Presto.Generator.strtounix_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">strtounix_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#StrToUnix">sqlglot.expressions.StrToUnix</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.strtounix_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.strtounix_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.strtounix_sql-549"><a href="#Presto.Generator.strtounix_sql-549"><span class="linenos">549</span></a> <span class="k">def</span> <span class="nf">strtounix_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">StrToUnix</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.strtounix_sql-550"><a href="#Presto.Generator.strtounix_sql-550"><span class="linenos">550</span></a> <span class="c1"># Since `TO_UNIXTIME` requires a `TIMESTAMP`, we need to parse the argument into one.</span>
</span><span id="Presto.Generator.strtounix_sql-551"><a href="#Presto.Generator.strtounix_sql-551"><span class="linenos">551</span></a> <span class="c1"># To do this, we first try to `DATE_PARSE` it, but since this can fail when there&#39;s a</span>
</span><span id="Presto.Generator.strtounix_sql-552"><a href="#Presto.Generator.strtounix_sql-552"><span class="linenos">552</span></a> <span class="c1"># timezone involved, we wrap it in a `TRY` call and use `PARSE_DATETIME` as a fallback,</span>
</span><span id="Presto.Generator.strtounix_sql-553"><a href="#Presto.Generator.strtounix_sql-553"><span class="linenos">553</span></a> <span class="c1"># which seems to be using the same time mapping as Hive, as per:</span>
</span><span id="Presto.Generator.strtounix_sql-554"><a href="#Presto.Generator.strtounix_sql-554"><span class="linenos">554</span></a> <span class="c1"># https://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html</span>
</span><span id="Presto.Generator.strtounix_sql-555"><a href="#Presto.Generator.strtounix_sql-555"><span class="linenos">555</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="Presto.Generator.strtounix_sql-556"><a href="#Presto.Generator.strtounix_sql-556"><span class="linenos">556</span></a> <span class="n">value_as_text</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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><span id="Presto.Generator.strtounix_sql-557"><a href="#Presto.Generator.strtounix_sql-557"><span class="linenos">557</span></a> <span class="n">value_as_timestamp</span> <span class="o">=</span> <span class="p">(</span>
</span><span id="Presto.Generator.strtounix_sql-558"><a href="#Presto.Generator.strtounix_sql-558"><span class="linenos">558</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</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">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="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span> <span class="k">else</span> <span class="n">this</span>
</span><span id="Presto.Generator.strtounix_sql-559"><a href="#Presto.Generator.strtounix_sql-559"><span class="linenos">559</span></a> <span class="p">)</span>
</span><span id="Presto.Generator.strtounix_sql-560"><a href="#Presto.Generator.strtounix_sql-560"><span class="linenos">560</span></a>
</span><span id="Presto.Generator.strtounix_sql-561"><a href="#Presto.Generator.strtounix_sql-561"><span class="linenos">561</span></a> <span class="n">parse_without_tz</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;DATE_PARSE&quot;</span><span class="p">,</span> <span class="n">value_as_text</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">expression</span><span class="p">))</span>
</span><span id="Presto.Generator.strtounix_sql-562"><a href="#Presto.Generator.strtounix_sql-562"><span class="linenos">562</span></a>
</span><span id="Presto.Generator.strtounix_sql-563"><a href="#Presto.Generator.strtounix_sql-563"><span class="linenos">563</span></a> <span class="n">formatted_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="Presto.Generator.strtounix_sql-564"><a href="#Presto.Generator.strtounix_sql-564"><span class="linenos">564</span></a> <span class="s2">&quot;DATE_FORMAT&quot;</span><span class="p">,</span> <span class="n">value_as_timestamp</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">expression</span><span class="p">)</span>
</span><span id="Presto.Generator.strtounix_sql-565"><a href="#Presto.Generator.strtounix_sql-565"><span class="linenos">565</span></a> <span class="p">)</span>
</span><span id="Presto.Generator.strtounix_sql-566"><a href="#Presto.Generator.strtounix_sql-566"><span class="linenos">566</span></a> <span class="n">parse_with_tz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
</span><span id="Presto.Generator.strtounix_sql-567"><a href="#Presto.Generator.strtounix_sql-567"><span class="linenos">567</span></a> <span class="s2">&quot;PARSE_DATETIME&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator.strtounix_sql-568"><a href="#Presto.Generator.strtounix_sql-568"><span class="linenos">568</span></a> <span class="n">formatted_value</span><span class="p">,</span>
</span><span id="Presto.Generator.strtounix_sql-569"><a href="#Presto.Generator.strtounix_sql-569"><span class="linenos">569</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span><span class="p">,</span> <span class="n">Hive</span><span class="o">.</span><span class="n">INVERSE_TIME_TRIE</span><span class="p">),</span>
</span><span id="Presto.Generator.strtounix_sql-570"><a href="#Presto.Generator.strtounix_sql-570"><span class="linenos">570</span></a> <span class="p">)</span>
</span><span id="Presto.Generator.strtounix_sql-571"><a href="#Presto.Generator.strtounix_sql-571"><span class="linenos">571</span></a> <span class="n">coalesced</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;COALESCE&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;TRY&quot;</span><span class="p">,</span> <span class="n">parse_without_tz</span><span class="p">),</span> <span class="n">parse_with_tz</span><span class="p">)</span>
</span><span id="Presto.Generator.strtounix_sql-572"><a href="#Presto.Generator.strtounix_sql-572"><span class="linenos">572</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;TO_UNIXTIME&quot;</span><span class="p">,</span> <span class="n">coalesced</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="Presto.Generator.bracket_sql" class="classattr">
<input id="Presto.Generator.bracket_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">bracket_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#Bracket">sqlglot.expressions.Bracket</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.bracket_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.bracket_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.bracket_sql-574"><a href="#Presto.Generator.bracket_sql-574"><span class="linenos">574</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.bracket_sql-575"><a href="#Presto.Generator.bracket_sql-575"><span class="linenos">575</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;safe&quot;</span><span class="p">):</span>
</span><span id="Presto.Generator.bracket_sql-576"><a href="#Presto.Generator.bracket_sql-576"><span class="linenos">576</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="Presto.Generator.bracket_sql-577"><a href="#Presto.Generator.bracket_sql-577"><span class="linenos">577</span></a> <span class="s2">&quot;ELEMENT_AT&quot;</span><span class="p">,</span>
</span><span id="Presto.Generator.bracket_sql-578"><a href="#Presto.Generator.bracket_sql-578"><span class="linenos">578</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="Presto.Generator.bracket_sql-579"><a href="#Presto.Generator.bracket_sql-579"><span class="linenos">579</span></a> <span class="n">seq_get</span><span class="p">(</span>
</span><span id="Presto.Generator.bracket_sql-580"><a href="#Presto.Generator.bracket_sql-580"><span class="linenos">580</span></a> <span class="n">apply_index_offset</span><span class="p">(</span>
</span><span id="Presto.Generator.bracket_sql-581"><a href="#Presto.Generator.bracket_sql-581"><span class="linenos">581</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
</span><span id="Presto.Generator.bracket_sql-582"><a href="#Presto.Generator.bracket_sql-582"><span class="linenos">582</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span>
</span><span id="Presto.Generator.bracket_sql-583"><a href="#Presto.Generator.bracket_sql-583"><span class="linenos">583</span></a> <span class="mi">1</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;offset&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
</span><span id="Presto.Generator.bracket_sql-584"><a href="#Presto.Generator.bracket_sql-584"><span class="linenos">584</span></a> <span class="p">),</span>
</span><span id="Presto.Generator.bracket_sql-585"><a href="#Presto.Generator.bracket_sql-585"><span class="linenos">585</span></a> <span class="mi">0</span><span class="p">,</span>
</span><span id="Presto.Generator.bracket_sql-586"><a href="#Presto.Generator.bracket_sql-586"><span class="linenos">586</span></a> <span class="p">),</span>
</span><span id="Presto.Generator.bracket_sql-587"><a href="#Presto.Generator.bracket_sql-587"><span class="linenos">587</span></a> <span class="p">)</span>
</span><span id="Presto.Generator.bracket_sql-588"><a href="#Presto.Generator.bracket_sql-588"><span class="linenos">588</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="Presto.Generator.struct_sql" class="classattr">
<input id="Presto.Generator.struct_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">struct_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#Struct">sqlglot.expressions.Struct</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.struct_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.struct_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.struct_sql-590"><a href="#Presto.Generator.struct_sql-590"><span class="linenos">590</span></a> <span class="k">def</span> <span class="nf">struct_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">Struct</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.struct_sql-591"><a href="#Presto.Generator.struct_sql-591"><span class="linenos">591</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
</span><span id="Presto.Generator.struct_sql-592"><a href="#Presto.Generator.struct_sql-592"><span class="linenos">592</span></a>
</span><span id="Presto.Generator.struct_sql-593"><a href="#Presto.Generator.struct_sql-593"><span class="linenos">593</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto.Generator.struct_sql-594"><a href="#Presto.Generator.struct_sql-594"><span class="linenos">594</span></a> <span class="n">values</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto.Generator.struct_sql-595"><a href="#Presto.Generator.struct_sql-595"><span class="linenos">595</span></a> <span class="n">schema</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto.Generator.struct_sql-596"><a href="#Presto.Generator.struct_sql-596"><span class="linenos">596</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Presto.Generator.struct_sql-597"><a href="#Presto.Generator.struct_sql-597"><span class="linenos">597</span></a>
</span><span id="Presto.Generator.struct_sql-598"><a href="#Presto.Generator.struct_sql-598"><span class="linenos">598</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="Presto.Generator.struct_sql-599"><a href="#Presto.Generator.struct_sql-599"><span class="linenos">599</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</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="Presto.Generator.struct_sql-600"><a href="#Presto.Generator.struct_sql-600"><span class="linenos">600</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">type</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">UNKNOWN</span><span class="p">):</span>
</span><span id="Presto.Generator.struct_sql-601"><a href="#Presto.Generator.struct_sql-601"><span class="linenos">601</span></a> <span class="n">unknown_type</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Presto.Generator.struct_sql-602"><a href="#Presto.Generator.struct_sql-602"><span class="linenos">602</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Presto.Generator.struct_sql-603"><a href="#Presto.Generator.struct_sql-603"><span class="linenos">603</span></a> <span class="n">schema</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">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="o">.</span><span class="n">type</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Presto.Generator.struct_sql-604"><a href="#Presto.Generator.struct_sql-604"><span class="linenos">604</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">,</span> <span class="s2">&quot;expression&quot;</span><span class="p">))</span>
</span><span id="Presto.Generator.struct_sql-605"><a href="#Presto.Generator.struct_sql-605"><span class="linenos">605</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Presto.Generator.struct_sql-606"><a href="#Presto.Generator.struct_sql-606"><span class="linenos">606</span></a> <span class="n">values</span><span class="o">.</span><span class="n">append</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">e</span><span class="p">))</span>
</span><span id="Presto.Generator.struct_sql-607"><a href="#Presto.Generator.struct_sql-607"><span class="linenos">607</span></a>
</span><span id="Presto.Generator.struct_sql-608"><a href="#Presto.Generator.struct_sql-608"><span class="linenos">608</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
</span><span id="Presto.Generator.struct_sql-609"><a href="#Presto.Generator.struct_sql-609"><span class="linenos">609</span></a>
</span><span id="Presto.Generator.struct_sql-610"><a href="#Presto.Generator.struct_sql-610"><span class="linenos">610</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">size</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">!=</span> <span class="n">size</span><span class="p">:</span>
</span><span id="Presto.Generator.struct_sql-611"><a href="#Presto.Generator.struct_sql-611"><span class="linenos">611</span></a> <span class="k">if</span> <span class="n">unknown_type</span><span class="p">:</span>
</span><span id="Presto.Generator.struct_sql-612"><a href="#Presto.Generator.struct_sql-612"><span class="linenos">612</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="Presto.Generator.struct_sql-613"><a href="#Presto.Generator.struct_sql-613"><span class="linenos">613</span></a> <span class="s2">&quot;Cannot convert untyped key-value definitions (try annotate_types).&quot;</span>
</span><span id="Presto.Generator.struct_sql-614"><a href="#Presto.Generator.struct_sql-614"><span class="linenos">614</span></a> <span class="p">)</span>
</span><span id="Presto.Generator.struct_sql-615"><a href="#Presto.Generator.struct_sql-615"><span class="linenos">615</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;ROW&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">)</span>
</span><span id="Presto.Generator.struct_sql-616"><a href="#Presto.Generator.struct_sql-616"><span class="linenos">616</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;CAST(ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">values</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS ROW(</span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span>
</span></pre></div>
</div>
<div id="Presto.Generator.interval_sql" class="classattr">
<input id="Presto.Generator.interval_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">interval_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#Interval">sqlglot.expressions.Interval</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.interval_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.interval_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.interval_sql-618"><a href="#Presto.Generator.interval_sql-618"><span class="linenos">618</span></a> <span class="k">def</span> <span class="nf">interval_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">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.interval_sql-619"><a href="#Presto.Generator.interval_sql-619"><span class="linenos">619</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;WEEK&quot;</span><span class="p">):</span>
</span><span id="Presto.Generator.interval_sql-620"><a href="#Presto.Generator.interval_sql-620"><span class="linenos">620</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> * INTERVAL &#39;7&#39; DAY)&quot;</span>
</span><span id="Presto.Generator.interval_sql-621"><a href="#Presto.Generator.interval_sql-621"><span class="linenos">621</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
</div>
<div id="Presto.Generator.transaction_sql" class="classattr">
<input id="Presto.Generator.transaction_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">transaction_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#Transaction">sqlglot.expressions.Transaction</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.transaction_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.transaction_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.transaction_sql-623"><a href="#Presto.Generator.transaction_sql-623"><span class="linenos">623</span></a> <span class="k">def</span> <span class="nf">transaction_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">Transaction</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.transaction_sql-624"><a href="#Presto.Generator.transaction_sql-624"><span class="linenos">624</span></a> <span class="n">modes</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;modes&quot;</span><span class="p">)</span>
</span><span id="Presto.Generator.transaction_sql-625"><a href="#Presto.Generator.transaction_sql-625"><span class="linenos">625</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">modes</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">modes</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="Presto.Generator.transaction_sql-626"><a href="#Presto.Generator.transaction_sql-626"><span class="linenos">626</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;START TRANSACTION</span><span class="si">{</span><span class="n">modes</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="Presto.Generator.offset_limit_modifiers" class="classattr">
<input id="Presto.Generator.offset_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">offset_limit_modifiers</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#Expression">sqlglot.expressions.Expression</a></span>,</span><span class="param"> <span class="n">fetch</span><span class="p">:</span> <span class="nb">bool</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n"><a href="../expressions.html#Fetch">sqlglot.expressions.Fetch</a></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Limit">sqlglot.expressions.Limit</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</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="Presto.Generator.offset_limit_modifiers-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.offset_limit_modifiers"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.offset_limit_modifiers-628"><a href="#Presto.Generator.offset_limit_modifiers-628"><span class="linenos">628</span></a> <span class="k">def</span> <span class="nf">offset_limit_modifiers</span><span class="p">(</span>
</span><span id="Presto.Generator.offset_limit_modifiers-629"><a href="#Presto.Generator.offset_limit_modifiers-629"><span class="linenos">629</span></a> <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="n">fetch</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">limit</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">Fetch</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">]</span>
</span><span id="Presto.Generator.offset_limit_modifiers-630"><a href="#Presto.Generator.offset_limit_modifiers-630"><span class="linenos">630</span></a> <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="Presto.Generator.offset_limit_modifiers-631"><a href="#Presto.Generator.offset_limit_modifiers-631"><span class="linenos">631</span></a> <span class="k">return</span> <span class="p">[</span>
</span><span id="Presto.Generator.offset_limit_modifiers-632"><a href="#Presto.Generator.offset_limit_modifiers-632"><span class="linenos">632</span></a> <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;offset&quot;</span><span class="p">),</span>
</span><span id="Presto.Generator.offset_limit_modifiers-633"><a href="#Presto.Generator.offset_limit_modifiers-633"><span class="linenos">633</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">limit</span><span class="p">),</span>
</span><span id="Presto.Generator.offset_limit_modifiers-634"><a href="#Presto.Generator.offset_limit_modifiers-634"><span class="linenos">634</span></a> <span class="p">]</span>
</span></pre></div>
</div>
<div id="Presto.Generator.create_sql" class="classattr">
<input id="Presto.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="Presto.Generator.create_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.create_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.create_sql-636"><a href="#Presto.Generator.create_sql-636"><span class="linenos">636</span></a> <span class="k">def</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="Presto.Generator.create_sql-637"><a href="#Presto.Generator.create_sql-637"><span class="linenos">637</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="Presto.Generator.create_sql-638"><a href="#Presto.Generator.create_sql-638"><span class="linenos">638</span></a><span class="sd"> Presto doesn&#39;t support CREATE VIEW with expressions (ex: `CREATE VIEW x (cola)` then `(cola)` is the expression),</span>
</span><span id="Presto.Generator.create_sql-639"><a href="#Presto.Generator.create_sql-639"><span class="linenos">639</span></a><span class="sd"> so we need to remove them</span>
</span><span id="Presto.Generator.create_sql-640"><a href="#Presto.Generator.create_sql-640"><span class="linenos">640</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Presto.Generator.create_sql-641"><a href="#Presto.Generator.create_sql-641"><span class="linenos">641</span></a> <span class="n">kind</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;kind&quot;</span><span class="p">]</span>
</span><span id="Presto.Generator.create_sql-642"><a href="#Presto.Generator.create_sql-642"><span class="linenos">642</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto.Generator.create_sql-643"><a href="#Presto.Generator.create_sql-643"><span class="linenos">643</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;VIEW&quot;</span> <span class="ow">and</span> <span class="n">schema</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
</span><span id="Presto.Generator.create_sql-644"><a href="#Presto.Generator.create_sql-644"><span class="linenos">644</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;expressions&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span><span id="Presto.Generator.create_sql-645"><a href="#Presto.Generator.create_sql-645"><span class="linenos">645</span></a> <span class="k">return</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></pre></div>
<div class="docstring"><p>Presto doesn't support CREATE VIEW with expressions (ex: <code>CREATE VIEW x (cola)</code> then <code>(cola)</code> is the expression),
so we need to remove them</p>
</div>
</div>
<div id="Presto.Generator.delete_sql" class="classattr">
<input id="Presto.Generator.delete_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">delete_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#Delete">sqlglot.expressions.Delete</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.delete_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.delete_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.delete_sql-647"><a href="#Presto.Generator.delete_sql-647"><span class="linenos">647</span></a> <span class="k">def</span> <span class="nf">delete_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">Delete</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.delete_sql-648"><a href="#Presto.Generator.delete_sql-648"><span class="linenos">648</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="Presto.Generator.delete_sql-649"><a href="#Presto.Generator.delete_sql-649"><span class="linenos">649</span></a><span class="sd"> Presto only supports DELETE FROM for a single table without an alias, so we need</span>
</span><span id="Presto.Generator.delete_sql-650"><a href="#Presto.Generator.delete_sql-650"><span class="linenos">650</span></a><span class="sd"> to remove the unnecessary parts. If the original DELETE statement contains more</span>
</span><span id="Presto.Generator.delete_sql-651"><a href="#Presto.Generator.delete_sql-651"><span class="linenos">651</span></a><span class="sd"> than one table to be deleted, we can&#39;t safely map it 1-1 to a Presto statement.</span>
</span><span id="Presto.Generator.delete_sql-652"><a href="#Presto.Generator.delete_sql-652"><span class="linenos">652</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Presto.Generator.delete_sql-653"><a href="#Presto.Generator.delete_sql-653"><span class="linenos">653</span></a> <span class="n">tables</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;tables&quot;</span><span class="p">)</span> <span class="ow">or</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="Presto.Generator.delete_sql-654"><a href="#Presto.Generator.delete_sql-654"><span class="linenos">654</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tables</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Presto.Generator.delete_sql-655"><a href="#Presto.Generator.delete_sql-655"><span class="linenos">655</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span><span id="Presto.Generator.delete_sql-656"><a href="#Presto.Generator.delete_sql-656"><span class="linenos">656</span></a>
</span><span id="Presto.Generator.delete_sql-657"><a href="#Presto.Generator.delete_sql-657"><span class="linenos">657</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">tables</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Presto.Generator.delete_sql-658"><a href="#Presto.Generator.delete_sql-658"><span class="linenos">658</span></a> <span class="n">expression</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">table</span><span class="p">)</span>
</span><span id="Presto.Generator.delete_sql-659"><a href="#Presto.Generator.delete_sql-659"><span class="linenos">659</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;tables&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span><span id="Presto.Generator.delete_sql-660"><a href="#Presto.Generator.delete_sql-660"><span class="linenos">660</span></a>
</span><span id="Presto.Generator.delete_sql-661"><a href="#Presto.Generator.delete_sql-661"><span class="linenos">661</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</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="Presto.Generator.delete_sql-662"><a href="#Presto.Generator.delete_sql-662"><span class="linenos">662</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">table</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="Presto.Generator.delete_sql-663"><a href="#Presto.Generator.delete_sql-663"><span class="linenos">663</span></a> <span class="k">if</span> <span class="n">table_alias</span><span class="p">:</span>
</span><span id="Presto.Generator.delete_sql-664"><a href="#Presto.Generator.delete_sql-664"><span class="linenos">664</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span><span id="Presto.Generator.delete_sql-665"><a href="#Presto.Generator.delete_sql-665"><span class="linenos">665</span></a> <span class="n">expression</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">Delete</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">unqualify_columns</span><span class="p">))</span>
</span><span id="Presto.Generator.delete_sql-666"><a href="#Presto.Generator.delete_sql-666"><span class="linenos">666</span></a>
</span><span id="Presto.Generator.delete_sql-667"><a href="#Presto.Generator.delete_sql-667"><span class="linenos">667</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Presto only supports DELETE FROM for a single table without an alias, so we need
to remove the unnecessary parts. If the original DELETE statement contains more
than one table to be deleted, we can't safely map it 1-1 to a Presto statement.</p>
</div>
</div>
<div id="Presto.Generator.jsonextract_sql" class="classattr">
<input id="Presto.Generator.jsonextract_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">jsonextract_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#JSONExtract">sqlglot.expressions.JSONExtract</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
<label class="view-source-button" for="Presto.Generator.jsonextract_sql-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Presto.Generator.jsonextract_sql"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.jsonextract_sql-669"><a href="#Presto.Generator.jsonextract_sql-669"><span class="linenos">669</span></a> <span class="k">def</span> <span class="nf">jsonextract_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">JSONExtract</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="Presto.Generator.jsonextract_sql-670"><a href="#Presto.Generator.jsonextract_sql-670"><span class="linenos">670</span></a> <span class="n">is_json_extract</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;variant_extract_is_json_extract&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
</span><span id="Presto.Generator.jsonextract_sql-671"><a href="#Presto.Generator.jsonextract_sql-671"><span class="linenos">671</span></a>
</span><span id="Presto.Generator.jsonextract_sql-672"><a href="#Presto.Generator.jsonextract_sql-672"><span class="linenos">672</span></a> <span class="c1"># Generate JSON_EXTRACT unless the user has configured that a Snowflake / Databricks</span>
</span><span id="Presto.Generator.jsonextract_sql-673"><a href="#Presto.Generator.jsonextract_sql-673"><span class="linenos">673</span></a> <span class="c1"># VARIANT extract (e.g. col:x.y) should map to dot notation (i.e ROW access) in Presto/Trino</span>
</span><span id="Presto.Generator.jsonextract_sql-674"><a href="#Presto.Generator.jsonextract_sql-674"><span class="linenos">674</span></a> <span class="k">if</span> <span class="ow">not</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;variant_extract&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">is_json_extract</span><span class="p">:</span>
</span><span id="Presto.Generator.jsonextract_sql-675"><a href="#Presto.Generator.jsonextract_sql-675"><span class="linenos">675</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="Presto.Generator.jsonextract_sql-676"><a href="#Presto.Generator.jsonextract_sql-676"><span class="linenos">676</span></a> <span class="s2">&quot;JSON_EXTRACT&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">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
</span><span id="Presto.Generator.jsonextract_sql-677"><a href="#Presto.Generator.jsonextract_sql-677"><span class="linenos">677</span></a> <span class="p">)</span>
</span><span id="Presto.Generator.jsonextract_sql-678"><a href="#Presto.Generator.jsonextract_sql-678"><span class="linenos">678</span></a>
</span><span id="Presto.Generator.jsonextract_sql-679"><a href="#Presto.Generator.jsonextract_sql-679"><span class="linenos">679</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="Presto.Generator.jsonextract_sql-680"><a href="#Presto.Generator.jsonextract_sql-680"><span class="linenos">680</span></a>
</span><span id="Presto.Generator.jsonextract_sql-681"><a href="#Presto.Generator.jsonextract_sql-681"><span class="linenos">681</span></a> <span class="c1"># Convert the JSONPath extraction `JSON_EXTRACT(col, &#39;$.x.y) to a ROW access col.x.y</span>
</span><span id="Presto.Generator.jsonextract_sql-682"><a href="#Presto.Generator.jsonextract_sql-682"><span class="linenos">682</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Presto.Generator.jsonextract_sql-683"><a href="#Presto.Generator.jsonextract_sql-683"><span class="linenos">683</span></a> <span class="k">for</span> <span class="n">path_key</span> <span class="ow">in</span> <span class="n">expression</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">1</span><span class="p">:]:</span>
</span><span id="Presto.Generator.jsonextract_sql-684"><a href="#Presto.Generator.jsonextract_sql-684"><span class="linenos">684</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path_key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">):</span>
</span><span id="Presto.Generator.jsonextract_sql-685"><a href="#Presto.Generator.jsonextract_sql-685"><span class="linenos">685</span></a> <span class="c1"># Cannot transpile subscripts, wildcards etc to dot notation</span>
</span><span id="Presto.Generator.jsonextract_sql-686"><a href="#Presto.Generator.jsonextract_sql-686"><span class="linenos">686</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span>
</span><span id="Presto.Generator.jsonextract_sql-687"><a href="#Presto.Generator.jsonextract_sql-687"><span class="linenos">687</span></a> <span class="sa">f</span><span class="s2">&quot;Cannot transpile JSONPath segment &#39;</span><span class="si">{</span><span class="n">path_key</span><span class="si">}</span><span class="s2">&#39; to ROW access&quot;</span>
</span><span id="Presto.Generator.jsonextract_sql-688"><a href="#Presto.Generator.jsonextract_sql-688"><span class="linenos">688</span></a> <span class="p">)</span>
</span><span id="Presto.Generator.jsonextract_sql-689"><a href="#Presto.Generator.jsonextract_sql-689"><span class="linenos">689</span></a> <span class="k">continue</span>
</span><span id="Presto.Generator.jsonextract_sql-690"><a href="#Presto.Generator.jsonextract_sql-690"><span class="linenos">690</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">path_key</span><span class="o">.</span><span class="n">this</span>
</span><span id="Presto.Generator.jsonextract_sql-691"><a href="#Presto.Generator.jsonextract_sql-691"><span class="linenos">691</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
</span><span id="Presto.Generator.jsonextract_sql-692"><a href="#Presto.Generator.jsonextract_sql-692"><span class="linenos">692</span></a> <span class="n">key</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">&quot;&#39;</span>
</span><span id="Presto.Generator.jsonextract_sql-693"><a href="#Presto.Generator.jsonextract_sql-693"><span class="linenos">693</span></a> <span class="n">segments</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="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Presto.Generator.jsonextract_sql-694"><a href="#Presto.Generator.jsonextract_sql-694"><span class="linenos">694</span></a>
</span><span id="Presto.Generator.jsonextract_sql-695"><a href="#Presto.Generator.jsonextract_sql-695"><span class="linenos">695</span></a> <span class="n">expr</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">segments</span><span class="p">)</span>
</span><span id="Presto.Generator.jsonextract_sql-696"><a href="#Presto.Generator.jsonextract_sql-696"><span class="linenos">696</span></a>
</span><span id="Presto.Generator.jsonextract_sql-697"><a href="#Presto.Generator.jsonextract_sql-697"><span class="linenos">697</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="n">expr</span><span class="si">}</span><span class="s2">&quot;</span>
</span></pre></div>
</div>
<div id="Presto.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="#Presto.Generator.SELECT_KINDS"></a>
</div>
<div id="Presto.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="#Presto.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="Presto.Generator.__init__" class="function"><a href="../generator.html#Generator.__init__">Generator</a></dd>
<dd id="Presto.Generator.NULL_ORDERING_SUPPORTED" class="variable"><a href="../generator.html#Generator.NULL_ORDERING_SUPPORTED">NULL_ORDERING_SUPPORTED</a></dd>
<dd id="Presto.Generator.IGNORE_NULLS_IN_FUNC" class="variable"><a href="../generator.html#Generator.IGNORE_NULLS_IN_FUNC">IGNORE_NULLS_IN_FUNC</a></dd>
<dd id="Presto.Generator.LOCKING_READS_SUPPORTED" class="variable"><a href="../generator.html#Generator.LOCKING_READS_SUPPORTED">LOCKING_READS_SUPPORTED</a></dd>
<dd id="Presto.Generator.WRAP_DERIVED_VALUES" class="variable"><a href="../generator.html#Generator.WRAP_DERIVED_VALUES">WRAP_DERIVED_VALUES</a></dd>
<dd id="Presto.Generator.CREATE_FUNCTION_RETURN_AS" class="variable"><a href="../generator.html#Generator.CREATE_FUNCTION_RETURN_AS">CREATE_FUNCTION_RETURN_AS</a></dd>
<dd id="Presto.Generator.MATCHED_BY_SOURCE" class="variable"><a href="../generator.html#Generator.MATCHED_BY_SOURCE">MATCHED_BY_SOURCE</a></dd>
<dd id="Presto.Generator.SINGLE_STRING_INTERVAL" class="variable"><a href="../generator.html#Generator.SINGLE_STRING_INTERVAL">SINGLE_STRING_INTERVAL</a></dd>
<dd id="Presto.Generator.LIMIT_FETCH" class="variable"><a href="../generator.html#Generator.LIMIT_FETCH">LIMIT_FETCH</a></dd>
<dd id="Presto.Generator.RENAME_TABLE_WITH_DB" class="variable"><a href="../generator.html#Generator.RENAME_TABLE_WITH_DB">RENAME_TABLE_WITH_DB</a></dd>
<dd id="Presto.Generator.GROUPINGS_SEP" class="variable"><a href="../generator.html#Generator.GROUPINGS_SEP">GROUPINGS_SEP</a></dd>
<dd id="Presto.Generator.INDEX_ON" class="variable"><a href="../generator.html#Generator.INDEX_ON">INDEX_ON</a></dd>
<dd id="Presto.Generator.QUERY_HINT_SEP" class="variable"><a href="../generator.html#Generator.QUERY_HINT_SEP">QUERY_HINT_SEP</a></dd>
<dd id="Presto.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="Presto.Generator.LIMIT_IS_TOP" class="variable"><a href="../generator.html#Generator.LIMIT_IS_TOP">LIMIT_IS_TOP</a></dd>
<dd id="Presto.Generator.RETURNING_END" class="variable"><a href="../generator.html#Generator.RETURNING_END">RETURNING_END</a></dd>
<dd id="Presto.Generator.EXTRACT_ALLOWS_QUOTES" class="variable"><a href="../generator.html#Generator.EXTRACT_ALLOWS_QUOTES">EXTRACT_ALLOWS_QUOTES</a></dd>
<dd id="Presto.Generator.VALUES_AS_TABLE" class="variable"><a href="../generator.html#Generator.VALUES_AS_TABLE">VALUES_AS_TABLE</a></dd>
<dd id="Presto.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="Presto.Generator.UNNEST_WITH_ORDINALITY" class="variable"><a href="../generator.html#Generator.UNNEST_WITH_ORDINALITY">UNNEST_WITH_ORDINALITY</a></dd>
<dd id="Presto.Generator.AGGREGATE_FILTER_SUPPORTED" class="variable"><a href="../generator.html#Generator.AGGREGATE_FILTER_SUPPORTED">AGGREGATE_FILTER_SUPPORTED</a></dd>
<dd id="Presto.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="Presto.Generator.COMPUTED_COLUMN_WITH_TYPE" class="variable"><a href="../generator.html#Generator.COMPUTED_COLUMN_WITH_TYPE">COMPUTED_COLUMN_WITH_TYPE</a></dd>
<dd id="Presto.Generator.SUPPORTS_TABLE_COPY" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_COPY">SUPPORTS_TABLE_COPY</a></dd>
<dd id="Presto.Generator.TABLESAMPLE_REQUIRES_PARENS" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_REQUIRES_PARENS">TABLESAMPLE_REQUIRES_PARENS</a></dd>
<dd id="Presto.Generator.TABLESAMPLE_SIZE_IS_ROWS" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_SIZE_IS_ROWS">TABLESAMPLE_SIZE_IS_ROWS</a></dd>
<dd id="Presto.Generator.TABLESAMPLE_KEYWORDS" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_KEYWORDS">TABLESAMPLE_KEYWORDS</a></dd>
<dd id="Presto.Generator.TABLESAMPLE_WITH_METHOD" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_WITH_METHOD">TABLESAMPLE_WITH_METHOD</a></dd>
<dd id="Presto.Generator.TABLESAMPLE_SEED_KEYWORD" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_SEED_KEYWORD">TABLESAMPLE_SEED_KEYWORD</a></dd>
<dd id="Presto.Generator.COLLATE_IS_FUNC" class="variable"><a href="../generator.html#Generator.COLLATE_IS_FUNC">COLLATE_IS_FUNC</a></dd>
<dd id="Presto.Generator.DATA_TYPE_SPECIFIERS_ALLOWED" class="variable"><a href="../generator.html#Generator.DATA_TYPE_SPECIFIERS_ALLOWED">DATA_TYPE_SPECIFIERS_ALLOWED</a></dd>
<dd id="Presto.Generator.ENSURE_BOOLS" class="variable"><a href="../generator.html#Generator.ENSURE_BOOLS">ENSURE_BOOLS</a></dd>
<dd id="Presto.Generator.CTE_RECURSIVE_KEYWORD_REQUIRED" class="variable"><a href="../generator.html#Generator.CTE_RECURSIVE_KEYWORD_REQUIRED">CTE_RECURSIVE_KEYWORD_REQUIRED</a></dd>
<dd id="Presto.Generator.LAST_DAY_SUPPORTS_DATE_PART" class="variable"><a href="../generator.html#Generator.LAST_DAY_SUPPORTS_DATE_PART">LAST_DAY_SUPPORTS_DATE_PART</a></dd>
<dd id="Presto.Generator.SUPPORTS_TABLE_ALIAS_COLUMNS" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_ALIAS_COLUMNS">SUPPORTS_TABLE_ALIAS_COLUMNS</a></dd>
<dd id="Presto.Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS" class="variable"><a href="../generator.html#Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS">UNPIVOT_ALIASES_ARE_IDENTIFIERS</a></dd>
<dd id="Presto.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="Presto.Generator.INSERT_OVERWRITE" class="variable"><a href="../generator.html#Generator.INSERT_OVERWRITE">INSERT_OVERWRITE</a></dd>
<dd id="Presto.Generator.SUPPORTS_SELECT_INTO" class="variable"><a href="../generator.html#Generator.SUPPORTS_SELECT_INTO">SUPPORTS_SELECT_INTO</a></dd>
<dd id="Presto.Generator.SUPPORTS_UNLOGGED_TABLES" class="variable"><a href="../generator.html#Generator.SUPPORTS_UNLOGGED_TABLES">SUPPORTS_UNLOGGED_TABLES</a></dd>
<dd id="Presto.Generator.SUPPORTS_CREATE_TABLE_LIKE" class="variable"><a href="../generator.html#Generator.SUPPORTS_CREATE_TABLE_LIKE">SUPPORTS_CREATE_TABLE_LIKE</a></dd>
<dd id="Presto.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="Presto.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="Presto.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="Presto.Generator.SUPPORTED_JSON_PATH_PARTS" class="variable"><a href="../generator.html#Generator.SUPPORTED_JSON_PATH_PARTS">SUPPORTED_JSON_PATH_PARTS</a></dd>
<dd id="Presto.Generator.CAN_IMPLEMENT_ARRAY_ANY" class="variable"><a href="../generator.html#Generator.CAN_IMPLEMENT_ARRAY_ANY">CAN_IMPLEMENT_ARRAY_ANY</a></dd>
<dd id="Presto.Generator.SET_OP_MODIFIERS" class="variable"><a href="../generator.html#Generator.SET_OP_MODIFIERS">SET_OP_MODIFIERS</a></dd>
<dd id="Presto.Generator.COPY_PARAMS_ARE_WRAPPED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_ARE_WRAPPED">COPY_PARAMS_ARE_WRAPPED</a></dd>
<dd id="Presto.Generator.COPY_PARAMS_EQ_REQUIRED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_EQ_REQUIRED">COPY_PARAMS_EQ_REQUIRED</a></dd>
<dd id="Presto.Generator.COPY_HAS_INTO_KEYWORD" class="variable"><a href="../generator.html#Generator.COPY_HAS_INTO_KEYWORD">COPY_HAS_INTO_KEYWORD</a></dd>
<dd id="Presto.Generator.TRY_SUPPORTED" class="variable"><a href="../generator.html#Generator.TRY_SUPPORTED">TRY_SUPPORTED</a></dd>
<dd id="Presto.Generator.SUPPORTS_UESCAPE" class="variable"><a href="../generator.html#Generator.SUPPORTS_UESCAPE">SUPPORTS_UESCAPE</a></dd>
<dd id="Presto.Generator.STAR_EXCEPT" class="variable"><a href="../generator.html#Generator.STAR_EXCEPT">STAR_EXCEPT</a></dd>
<dd id="Presto.Generator.WITH_PROPERTIES_PREFIX" class="variable"><a href="../generator.html#Generator.WITH_PROPERTIES_PREFIX">WITH_PROPERTIES_PREFIX</a></dd>
<dd id="Presto.Generator.QUOTE_JSON_PATH" class="variable"><a href="../generator.html#Generator.QUOTE_JSON_PATH">QUOTE_JSON_PATH</a></dd>
<dd id="Presto.Generator.SUPPORTS_EXPLODING_PROJECTIONS" class="variable"><a href="../generator.html#Generator.SUPPORTS_EXPLODING_PROJECTIONS">SUPPORTS_EXPLODING_PROJECTIONS</a></dd>
<dd id="Presto.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="Presto.Generator.SUPPORTS_CONVERT_TIMEZONE" class="variable"><a href="../generator.html#Generator.SUPPORTS_CONVERT_TIMEZONE">SUPPORTS_CONVERT_TIMEZONE</a></dd>
<dd id="Presto.Generator.TIME_PART_SINGULARS" class="variable"><a href="../generator.html#Generator.TIME_PART_SINGULARS">TIME_PART_SINGULARS</a></dd>
<dd id="Presto.Generator.TOKEN_MAPPING" class="variable"><a href="../generator.html#Generator.TOKEN_MAPPING">TOKEN_MAPPING</a></dd>
<dd id="Presto.Generator.PARAMETER_TOKEN" class="variable"><a href="../generator.html#Generator.PARAMETER_TOKEN">PARAMETER_TOKEN</a></dd>
<dd id="Presto.Generator.NAMED_PLACEHOLDER_TOKEN" class="variable"><a href="../generator.html#Generator.NAMED_PLACEHOLDER_TOKEN">NAMED_PLACEHOLDER_TOKEN</a></dd>
<dd id="Presto.Generator.WITH_SEPARATED_COMMENTS" class="variable"><a href="../generator.html#Generator.WITH_SEPARATED_COMMENTS">WITH_SEPARATED_COMMENTS</a></dd>
<dd id="Presto.Generator.EXCLUDE_COMMENTS" class="variable"><a href="../generator.html#Generator.EXCLUDE_COMMENTS">EXCLUDE_COMMENTS</a></dd>
<dd id="Presto.Generator.UNWRAPPED_INTERVAL_VALUES" class="variable"><a href="../generator.html#Generator.UNWRAPPED_INTERVAL_VALUES">UNWRAPPED_INTERVAL_VALUES</a></dd>
<dd id="Presto.Generator.PARAMETERIZABLE_TEXT_TYPES" class="variable"><a href="../generator.html#Generator.PARAMETERIZABLE_TEXT_TYPES">PARAMETERIZABLE_TEXT_TYPES</a></dd>
<dd id="Presto.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES" class="variable"><a href="../generator.html#Generator.EXPRESSIONS_WITHOUT_NESTED_CTES">EXPRESSIONS_WITHOUT_NESTED_CTES</a></dd>
<dd id="Presto.Generator.SENTINEL_LINE_BREAK" class="variable"><a href="../generator.html#Generator.SENTINEL_LINE_BREAK">SENTINEL_LINE_BREAK</a></dd>
<dd id="Presto.Generator.pretty" class="variable"><a href="../generator.html#Generator.pretty">pretty</a></dd>
<dd id="Presto.Generator.identify" class="variable"><a href="../generator.html#Generator.identify">identify</a></dd>
<dd id="Presto.Generator.normalize" class="variable"><a href="../generator.html#Generator.normalize">normalize</a></dd>
<dd id="Presto.Generator.pad" class="variable"><a href="../generator.html#Generator.pad">pad</a></dd>
<dd id="Presto.Generator.unsupported_level" class="variable"><a href="../generator.html#Generator.unsupported_level">unsupported_level</a></dd>
<dd id="Presto.Generator.max_unsupported" class="variable"><a href="../generator.html#Generator.max_unsupported">max_unsupported</a></dd>
<dd id="Presto.Generator.leading_comma" class="variable"><a href="../generator.html#Generator.leading_comma">leading_comma</a></dd>
<dd id="Presto.Generator.max_text_width" class="variable"><a href="../generator.html#Generator.max_text_width">max_text_width</a></dd>
<dd id="Presto.Generator.comments" class="variable"><a href="../generator.html#Generator.comments">comments</a></dd>
<dd id="Presto.Generator.dialect" class="variable"><a href="../generator.html#Generator.dialect">dialect</a></dd>
<dd id="Presto.Generator.normalize_functions" class="variable"><a href="../generator.html#Generator.normalize_functions">normalize_functions</a></dd>
<dd id="Presto.Generator.unsupported_messages" class="variable"><a href="../generator.html#Generator.unsupported_messages">unsupported_messages</a></dd>
<dd id="Presto.Generator.generate" class="function"><a href="../generator.html#Generator.generate">generate</a></dd>
<dd id="Presto.Generator.preprocess" class="function"><a href="../generator.html#Generator.preprocess">preprocess</a></dd>
<dd id="Presto.Generator.unsupported" class="function"><a href="../generator.html#Generator.unsupported">unsupported</a></dd>
<dd id="Presto.Generator.sep" class="function"><a href="../generator.html#Generator.sep">sep</a></dd>
<dd id="Presto.Generator.seg" class="function"><a href="../generator.html#Generator.seg">seg</a></dd>
<dd id="Presto.Generator.pad_comment" class="function"><a href="../generator.html#Generator.pad_comment">pad_comment</a></dd>
<dd id="Presto.Generator.maybe_comment" class="function"><a href="../generator.html#Generator.maybe_comment">maybe_comment</a></dd>
<dd id="Presto.Generator.wrap" class="function"><a href="../generator.html#Generator.wrap">wrap</a></dd>
<dd id="Presto.Generator.no_identify" class="function"><a href="../generator.html#Generator.no_identify">no_identify</a></dd>
<dd id="Presto.Generator.normalize_func" class="function"><a href="../generator.html#Generator.normalize_func">normalize_func</a></dd>
<dd id="Presto.Generator.indent" class="function"><a href="../generator.html#Generator.indent">indent</a></dd>
<dd id="Presto.Generator.sql" class="function"><a href="../generator.html#Generator.sql">sql</a></dd>
<dd id="Presto.Generator.uncache_sql" class="function"><a href="../generator.html#Generator.uncache_sql">uncache_sql</a></dd>
<dd id="Presto.Generator.cache_sql" class="function"><a href="../generator.html#Generator.cache_sql">cache_sql</a></dd>
<dd id="Presto.Generator.characterset_sql" class="function"><a href="../generator.html#Generator.characterset_sql">characterset_sql</a></dd>
<dd id="Presto.Generator.column_parts" class="function"><a href="../generator.html#Generator.column_parts">column_parts</a></dd>
<dd id="Presto.Generator.column_sql" class="function"><a href="../generator.html#Generator.column_sql">column_sql</a></dd>
<dd id="Presto.Generator.columnposition_sql" class="function"><a href="../generator.html#Generator.columnposition_sql">columnposition_sql</a></dd>
<dd id="Presto.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd>
<dd id="Presto.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd>
<dd id="Presto.Generator.computedcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.computedcolumnconstraint_sql">computedcolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.generatedasrowcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasrowcolumnconstraint_sql">generatedasrowcolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.periodforsystemtimeconstraint_sql" class="function"><a href="../generator.html#Generator.periodforsystemtimeconstraint_sql">periodforsystemtimeconstraint_sql</a></dd>
<dd id="Presto.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.transformcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.transformcolumnconstraint_sql">transformcolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.uniquecolumnconstraint_sql" class="function"><a href="../generator.html#Generator.uniquecolumnconstraint_sql">uniquecolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.createable_sql" class="function"><a href="../generator.html#Generator.createable_sql">createable_sql</a></dd>
<dd id="Presto.Generator.sequenceproperties_sql" class="function"><a href="../generator.html#Generator.sequenceproperties_sql">sequenceproperties_sql</a></dd>
<dd id="Presto.Generator.clone_sql" class="function"><a href="../generator.html#Generator.clone_sql">clone_sql</a></dd>
<dd id="Presto.Generator.describe_sql" class="function"><a href="../generator.html#Generator.describe_sql">describe_sql</a></dd>
<dd id="Presto.Generator.heredoc_sql" class="function"><a href="../generator.html#Generator.heredoc_sql">heredoc_sql</a></dd>
<dd id="Presto.Generator.prepend_ctes" class="function"><a href="../generator.html#Generator.prepend_ctes">prepend_ctes</a></dd>
<dd id="Presto.Generator.with_sql" class="function"><a href="../generator.html#Generator.with_sql">with_sql</a></dd>
<dd id="Presto.Generator.cte_sql" class="function"><a href="../generator.html#Generator.cte_sql">cte_sql</a></dd>
<dd id="Presto.Generator.tablealias_sql" class="function"><a href="../generator.html#Generator.tablealias_sql">tablealias_sql</a></dd>
<dd id="Presto.Generator.bitstring_sql" class="function"><a href="../generator.html#Generator.bitstring_sql">bitstring_sql</a></dd>
<dd id="Presto.Generator.hexstring_sql" class="function"><a href="../generator.html#Generator.hexstring_sql">hexstring_sql</a></dd>
<dd id="Presto.Generator.bytestring_sql" class="function"><a href="../generator.html#Generator.bytestring_sql">bytestring_sql</a></dd>
<dd id="Presto.Generator.unicodestring_sql" class="function"><a href="../generator.html#Generator.unicodestring_sql">unicodestring_sql</a></dd>
<dd id="Presto.Generator.rawstring_sql" class="function"><a href="../generator.html#Generator.rawstring_sql">rawstring_sql</a></dd>
<dd id="Presto.Generator.datatypeparam_sql" class="function"><a href="../generator.html#Generator.datatypeparam_sql">datatypeparam_sql</a></dd>
<dd id="Presto.Generator.datatype_sql" class="function"><a href="../generator.html#Generator.datatype_sql">datatype_sql</a></dd>
<dd id="Presto.Generator.directory_sql" class="function"><a href="../generator.html#Generator.directory_sql">directory_sql</a></dd>
<dd id="Presto.Generator.drop_sql" class="function"><a href="../generator.html#Generator.drop_sql">drop_sql</a></dd>
<dd id="Presto.Generator.set_operation" class="function"><a href="../generator.html#Generator.set_operation">set_operation</a></dd>
<dd id="Presto.Generator.set_operations" class="function"><a href="../generator.html#Generator.set_operations">set_operations</a></dd>
<dd id="Presto.Generator.fetch_sql" class="function"><a href="../generator.html#Generator.fetch_sql">fetch_sql</a></dd>
<dd id="Presto.Generator.filter_sql" class="function"><a href="../generator.html#Generator.filter_sql">filter_sql</a></dd>
<dd id="Presto.Generator.hint_sql" class="function"><a href="../generator.html#Generator.hint_sql">hint_sql</a></dd>
<dd id="Presto.Generator.indexparameters_sql" class="function"><a href="../generator.html#Generator.indexparameters_sql">indexparameters_sql</a></dd>
<dd id="Presto.Generator.index_sql" class="function"><a href="../generator.html#Generator.index_sql">index_sql</a></dd>
<dd id="Presto.Generator.identifier_sql" class="function"><a href="../generator.html#Generator.identifier_sql">identifier_sql</a></dd>
<dd id="Presto.Generator.hex_sql" class="function"><a href="../generator.html#Generator.hex_sql">hex_sql</a></dd>
<dd id="Presto.Generator.lowerhex_sql" class="function"><a href="../generator.html#Generator.lowerhex_sql">lowerhex_sql</a></dd>
<dd id="Presto.Generator.inputoutputformat_sql" class="function"><a href="../generator.html#Generator.inputoutputformat_sql">inputoutputformat_sql</a></dd>
<dd id="Presto.Generator.national_sql" class="function"><a href="../generator.html#Generator.national_sql">national_sql</a></dd>
<dd id="Presto.Generator.partition_sql" class="function"><a href="../generator.html#Generator.partition_sql">partition_sql</a></dd>
<dd id="Presto.Generator.properties_sql" class="function"><a href="../generator.html#Generator.properties_sql">properties_sql</a></dd>
<dd id="Presto.Generator.root_properties" class="function"><a href="../generator.html#Generator.root_properties">root_properties</a></dd>
<dd id="Presto.Generator.properties" class="function"><a href="../generator.html#Generator.properties">properties</a></dd>
<dd id="Presto.Generator.with_properties" class="function"><a href="../generator.html#Generator.with_properties">with_properties</a></dd>
<dd id="Presto.Generator.locate_properties" class="function"><a href="../generator.html#Generator.locate_properties">locate_properties</a></dd>
<dd id="Presto.Generator.property_name" class="function"><a href="../generator.html#Generator.property_name">property_name</a></dd>
<dd id="Presto.Generator.property_sql" class="function"><a href="../generator.html#Generator.property_sql">property_sql</a></dd>
<dd id="Presto.Generator.likeproperty_sql" class="function"><a href="../generator.html#Generator.likeproperty_sql">likeproperty_sql</a></dd>
<dd id="Presto.Generator.fallbackproperty_sql" class="function"><a href="../generator.html#Generator.fallbackproperty_sql">fallbackproperty_sql</a></dd>
<dd id="Presto.Generator.journalproperty_sql" class="function"><a href="../generator.html#Generator.journalproperty_sql">journalproperty_sql</a></dd>
<dd id="Presto.Generator.freespaceproperty_sql" class="function"><a href="../generator.html#Generator.freespaceproperty_sql">freespaceproperty_sql</a></dd>
<dd id="Presto.Generator.checksumproperty_sql" class="function"><a href="../generator.html#Generator.checksumproperty_sql">checksumproperty_sql</a></dd>
<dd id="Presto.Generator.mergeblockratioproperty_sql" class="function"><a href="../generator.html#Generator.mergeblockratioproperty_sql">mergeblockratioproperty_sql</a></dd>
<dd id="Presto.Generator.datablocksizeproperty_sql" class="function"><a href="../generator.html#Generator.datablocksizeproperty_sql">datablocksizeproperty_sql</a></dd>
<dd id="Presto.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd>
<dd id="Presto.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd>
<dd id="Presto.Generator.partitionboundspec_sql" class="function"><a href="../generator.html#Generator.partitionboundspec_sql">partitionboundspec_sql</a></dd>
<dd id="Presto.Generator.partitionedofproperty_sql" class="function"><a href="../generator.html#Generator.partitionedofproperty_sql">partitionedofproperty_sql</a></dd>
<dd id="Presto.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd>
<dd id="Presto.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd>
<dd id="Presto.Generator.withsystemversioningproperty_sql" class="function"><a href="../generator.html#Generator.withsystemversioningproperty_sql">withsystemversioningproperty_sql</a></dd>
<dd id="Presto.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd>
<dd id="Presto.Generator.introducer_sql" class="function"><a href="../generator.html#Generator.introducer_sql">introducer_sql</a></dd>
<dd id="Presto.Generator.kill_sql" class="function"><a href="../generator.html#Generator.kill_sql">kill_sql</a></dd>
<dd id="Presto.Generator.pseudotype_sql" class="function"><a href="../generator.html#Generator.pseudotype_sql">pseudotype_sql</a></dd>
<dd id="Presto.Generator.objectidentifier_sql" class="function"><a href="../generator.html#Generator.objectidentifier_sql">objectidentifier_sql</a></dd>
<dd id="Presto.Generator.onconflict_sql" class="function"><a href="../generator.html#Generator.onconflict_sql">onconflict_sql</a></dd>
<dd id="Presto.Generator.returning_sql" class="function"><a href="../generator.html#Generator.returning_sql">returning_sql</a></dd>
<dd id="Presto.Generator.rowformatdelimitedproperty_sql" class="function"><a href="../generator.html#Generator.rowformatdelimitedproperty_sql">rowformatdelimitedproperty_sql</a></dd>
<dd id="Presto.Generator.withtablehint_sql" class="function"><a href="../generator.html#Generator.withtablehint_sql">withtablehint_sql</a></dd>
<dd id="Presto.Generator.indextablehint_sql" class="function"><a href="../generator.html#Generator.indextablehint_sql">indextablehint_sql</a></dd>
<dd id="Presto.Generator.historicaldata_sql" class="function"><a href="../generator.html#Generator.historicaldata_sql">historicaldata_sql</a></dd>
<dd id="Presto.Generator.table_parts" class="function"><a href="../generator.html#Generator.table_parts">table_parts</a></dd>
<dd id="Presto.Generator.table_sql" class="function"><a href="../generator.html#Generator.table_sql">table_sql</a></dd>
<dd id="Presto.Generator.tablesample_sql" class="function"><a href="../generator.html#Generator.tablesample_sql">tablesample_sql</a></dd>
<dd id="Presto.Generator.pivot_sql" class="function"><a href="../generator.html#Generator.pivot_sql">pivot_sql</a></dd>
<dd id="Presto.Generator.version_sql" class="function"><a href="../generator.html#Generator.version_sql">version_sql</a></dd>
<dd id="Presto.Generator.tuple_sql" class="function"><a href="../generator.html#Generator.tuple_sql">tuple_sql</a></dd>
<dd id="Presto.Generator.update_sql" class="function"><a href="../generator.html#Generator.update_sql">update_sql</a></dd>
<dd id="Presto.Generator.values_sql" class="function"><a href="../generator.html#Generator.values_sql">values_sql</a></dd>
<dd id="Presto.Generator.var_sql" class="function"><a href="../generator.html#Generator.var_sql">var_sql</a></dd>
<dd id="Presto.Generator.into_sql" class="function"><a href="../generator.html#Generator.into_sql">into_sql</a></dd>
<dd id="Presto.Generator.from_sql" class="function"><a href="../generator.html#Generator.from_sql">from_sql</a></dd>
<dd id="Presto.Generator.groupingsets_sql" class="function"><a href="../generator.html#Generator.groupingsets_sql">groupingsets_sql</a></dd>
<dd id="Presto.Generator.rollup_sql" class="function"><a href="../generator.html#Generator.rollup_sql">rollup_sql</a></dd>
<dd id="Presto.Generator.cube_sql" class="function"><a href="../generator.html#Generator.cube_sql">cube_sql</a></dd>
<dd id="Presto.Generator.group_sql" class="function"><a href="../generator.html#Generator.group_sql">group_sql</a></dd>
<dd id="Presto.Generator.having_sql" class="function"><a href="../generator.html#Generator.having_sql">having_sql</a></dd>
<dd id="Presto.Generator.connect_sql" class="function"><a href="../generator.html#Generator.connect_sql">connect_sql</a></dd>
<dd id="Presto.Generator.prior_sql" class="function"><a href="../generator.html#Generator.prior_sql">prior_sql</a></dd>
<dd id="Presto.Generator.join_sql" class="function"><a href="../generator.html#Generator.join_sql">join_sql</a></dd>
<dd id="Presto.Generator.lambda_sql" class="function"><a href="../generator.html#Generator.lambda_sql">lambda_sql</a></dd>
<dd id="Presto.Generator.lateral_op" class="function"><a href="../generator.html#Generator.lateral_op">lateral_op</a></dd>
<dd id="Presto.Generator.lateral_sql" class="function"><a href="../generator.html#Generator.lateral_sql">lateral_sql</a></dd>
<dd id="Presto.Generator.limit_sql" class="function"><a href="../generator.html#Generator.limit_sql">limit_sql</a></dd>
<dd id="Presto.Generator.offset_sql" class="function"><a href="../generator.html#Generator.offset_sql">offset_sql</a></dd>
<dd id="Presto.Generator.setitem_sql" class="function"><a href="../generator.html#Generator.setitem_sql">setitem_sql</a></dd>
<dd id="Presto.Generator.set_sql" class="function"><a href="../generator.html#Generator.set_sql">set_sql</a></dd>
<dd id="Presto.Generator.pragma_sql" class="function"><a href="../generator.html#Generator.pragma_sql">pragma_sql</a></dd>
<dd id="Presto.Generator.lock_sql" class="function"><a href="../generator.html#Generator.lock_sql">lock_sql</a></dd>
<dd id="Presto.Generator.literal_sql" class="function"><a href="../generator.html#Generator.literal_sql">literal_sql</a></dd>
<dd id="Presto.Generator.escape_str" class="function"><a href="../generator.html#Generator.escape_str">escape_str</a></dd>
<dd id="Presto.Generator.loaddata_sql" class="function"><a href="../generator.html#Generator.loaddata_sql">loaddata_sql</a></dd>
<dd id="Presto.Generator.null_sql" class="function"><a href="../generator.html#Generator.null_sql">null_sql</a></dd>
<dd id="Presto.Generator.boolean_sql" class="function"><a href="../generator.html#Generator.boolean_sql">boolean_sql</a></dd>
<dd id="Presto.Generator.order_sql" class="function"><a href="../generator.html#Generator.order_sql">order_sql</a></dd>
<dd id="Presto.Generator.withfill_sql" class="function"><a href="../generator.html#Generator.withfill_sql">withfill_sql</a></dd>
<dd id="Presto.Generator.cluster_sql" class="function"><a href="../generator.html#Generator.cluster_sql">cluster_sql</a></dd>
<dd id="Presto.Generator.distribute_sql" class="function"><a href="../generator.html#Generator.distribute_sql">distribute_sql</a></dd>
<dd id="Presto.Generator.sort_sql" class="function"><a href="../generator.html#Generator.sort_sql">sort_sql</a></dd>
<dd id="Presto.Generator.ordered_sql" class="function"><a href="../generator.html#Generator.ordered_sql">ordered_sql</a></dd>
<dd id="Presto.Generator.matchrecognizemeasure_sql" class="function"><a href="../generator.html#Generator.matchrecognizemeasure_sql">matchrecognizemeasure_sql</a></dd>
<dd id="Presto.Generator.matchrecognize_sql" class="function"><a href="../generator.html#Generator.matchrecognize_sql">matchrecognize_sql</a></dd>
<dd id="Presto.Generator.query_modifiers" class="function"><a href="../generator.html#Generator.query_modifiers">query_modifiers</a></dd>
<dd id="Presto.Generator.options_modifier" class="function"><a href="../generator.html#Generator.options_modifier">options_modifier</a></dd>
<dd id="Presto.Generator.queryoption_sql" class="function"><a href="../generator.html#Generator.queryoption_sql">queryoption_sql</a></dd>
<dd id="Presto.Generator.after_limit_modifiers" class="function"><a href="../generator.html#Generator.after_limit_modifiers">after_limit_modifiers</a></dd>
<dd id="Presto.Generator.select_sql" class="function"><a href="../generator.html#Generator.select_sql">select_sql</a></dd>
<dd id="Presto.Generator.schema_sql" class="function"><a href="../generator.html#Generator.schema_sql">schema_sql</a></dd>
<dd id="Presto.Generator.schema_columns_sql" class="function"><a href="../generator.html#Generator.schema_columns_sql">schema_columns_sql</a></dd>
<dd id="Presto.Generator.star_sql" class="function"><a href="../generator.html#Generator.star_sql">star_sql</a></dd>
<dd id="Presto.Generator.parameter_sql" class="function"><a href="../generator.html#Generator.parameter_sql">parameter_sql</a></dd>
<dd id="Presto.Generator.sessionparameter_sql" class="function"><a href="../generator.html#Generator.sessionparameter_sql">sessionparameter_sql</a></dd>
<dd id="Presto.Generator.placeholder_sql" class="function"><a href="../generator.html#Generator.placeholder_sql">placeholder_sql</a></dd>
<dd id="Presto.Generator.subquery_sql" class="function"><a href="../generator.html#Generator.subquery_sql">subquery_sql</a></dd>
<dd id="Presto.Generator.qualify_sql" class="function"><a href="../generator.html#Generator.qualify_sql">qualify_sql</a></dd>
<dd id="Presto.Generator.unnest_sql" class="function"><a href="../generator.html#Generator.unnest_sql">unnest_sql</a></dd>
<dd id="Presto.Generator.prewhere_sql" class="function"><a href="../generator.html#Generator.prewhere_sql">prewhere_sql</a></dd>
<dd id="Presto.Generator.where_sql" class="function"><a href="../generator.html#Generator.where_sql">where_sql</a></dd>
<dd id="Presto.Generator.window_sql" class="function"><a href="../generator.html#Generator.window_sql">window_sql</a></dd>
<dd id="Presto.Generator.partition_by_sql" class="function"><a href="../generator.html#Generator.partition_by_sql">partition_by_sql</a></dd>
<dd id="Presto.Generator.windowspec_sql" class="function"><a href="../generator.html#Generator.windowspec_sql">windowspec_sql</a></dd>
<dd id="Presto.Generator.withingroup_sql" class="function"><a href="../generator.html#Generator.withingroup_sql">withingroup_sql</a></dd>
<dd id="Presto.Generator.between_sql" class="function"><a href="../generator.html#Generator.between_sql">between_sql</a></dd>
<dd id="Presto.Generator.bracket_offset_expressions" class="function"><a href="../generator.html#Generator.bracket_offset_expressions">bracket_offset_expressions</a></dd>
<dd id="Presto.Generator.all_sql" class="function"><a href="../generator.html#Generator.all_sql">all_sql</a></dd>
<dd id="Presto.Generator.any_sql" class="function"><a href="../generator.html#Generator.any_sql">any_sql</a></dd>
<dd id="Presto.Generator.exists_sql" class="function"><a href="../generator.html#Generator.exists_sql">exists_sql</a></dd>
<dd id="Presto.Generator.case_sql" class="function"><a href="../generator.html#Generator.case_sql">case_sql</a></dd>
<dd id="Presto.Generator.constraint_sql" class="function"><a href="../generator.html#Generator.constraint_sql">constraint_sql</a></dd>
<dd id="Presto.Generator.nextvaluefor_sql" class="function"><a href="../generator.html#Generator.nextvaluefor_sql">nextvaluefor_sql</a></dd>
<dd id="Presto.Generator.extract_sql" class="function"><a href="../generator.html#Generator.extract_sql">extract_sql</a></dd>
<dd id="Presto.Generator.trim_sql" class="function"><a href="../generator.html#Generator.trim_sql">trim_sql</a></dd>
<dd id="Presto.Generator.convert_concat_args" class="function"><a href="../generator.html#Generator.convert_concat_args">convert_concat_args</a></dd>
<dd id="Presto.Generator.concat_sql" class="function"><a href="../generator.html#Generator.concat_sql">concat_sql</a></dd>
<dd id="Presto.Generator.concatws_sql" class="function"><a href="../generator.html#Generator.concatws_sql">concatws_sql</a></dd>
<dd id="Presto.Generator.check_sql" class="function"><a href="../generator.html#Generator.check_sql">check_sql</a></dd>
<dd id="Presto.Generator.foreignkey_sql" class="function"><a href="../generator.html#Generator.foreignkey_sql">foreignkey_sql</a></dd>
<dd id="Presto.Generator.primarykey_sql" class="function"><a href="../generator.html#Generator.primarykey_sql">primarykey_sql</a></dd>
<dd id="Presto.Generator.if_sql" class="function"><a href="../generator.html#Generator.if_sql">if_sql</a></dd>
<dd id="Presto.Generator.matchagainst_sql" class="function"><a href="../generator.html#Generator.matchagainst_sql">matchagainst_sql</a></dd>
<dd id="Presto.Generator.jsonkeyvalue_sql" class="function"><a href="../generator.html#Generator.jsonkeyvalue_sql">jsonkeyvalue_sql</a></dd>
<dd id="Presto.Generator.jsonpath_sql" class="function"><a href="../generator.html#Generator.jsonpath_sql">jsonpath_sql</a></dd>
<dd id="Presto.Generator.json_path_part" class="function"><a href="../generator.html#Generator.json_path_part">json_path_part</a></dd>
<dd id="Presto.Generator.formatjson_sql" class="function"><a href="../generator.html#Generator.formatjson_sql">formatjson_sql</a></dd>
<dd id="Presto.Generator.jsonobject_sql" class="function"><a href="../generator.html#Generator.jsonobject_sql">jsonobject_sql</a></dd>
<dd id="Presto.Generator.jsonobjectagg_sql" class="function"><a href="../generator.html#Generator.jsonobjectagg_sql">jsonobjectagg_sql</a></dd>
<dd id="Presto.Generator.jsonarray_sql" class="function"><a href="../generator.html#Generator.jsonarray_sql">jsonarray_sql</a></dd>
<dd id="Presto.Generator.jsonarrayagg_sql" class="function"><a href="../generator.html#Generator.jsonarrayagg_sql">jsonarrayagg_sql</a></dd>
<dd id="Presto.Generator.jsoncolumndef_sql" class="function"><a href="../generator.html#Generator.jsoncolumndef_sql">jsoncolumndef_sql</a></dd>
<dd id="Presto.Generator.jsonschema_sql" class="function"><a href="../generator.html#Generator.jsonschema_sql">jsonschema_sql</a></dd>
<dd id="Presto.Generator.jsontable_sql" class="function"><a href="../generator.html#Generator.jsontable_sql">jsontable_sql</a></dd>
<dd id="Presto.Generator.openjsoncolumndef_sql" class="function"><a href="../generator.html#Generator.openjsoncolumndef_sql">openjsoncolumndef_sql</a></dd>
<dd id="Presto.Generator.openjson_sql" class="function"><a href="../generator.html#Generator.openjson_sql">openjson_sql</a></dd>
<dd id="Presto.Generator.in_sql" class="function"><a href="../generator.html#Generator.in_sql">in_sql</a></dd>
<dd id="Presto.Generator.in_unnest_op" class="function"><a href="../generator.html#Generator.in_unnest_op">in_unnest_op</a></dd>
<dd id="Presto.Generator.return_sql" class="function"><a href="../generator.html#Generator.return_sql">return_sql</a></dd>
<dd id="Presto.Generator.reference_sql" class="function"><a href="../generator.html#Generator.reference_sql">reference_sql</a></dd>
<dd id="Presto.Generator.anonymous_sql" class="function"><a href="../generator.html#Generator.anonymous_sql">anonymous_sql</a></dd>
<dd id="Presto.Generator.paren_sql" class="function"><a href="../generator.html#Generator.paren_sql">paren_sql</a></dd>
<dd id="Presto.Generator.neg_sql" class="function"><a href="../generator.html#Generator.neg_sql">neg_sql</a></dd>
<dd id="Presto.Generator.not_sql" class="function"><a href="../generator.html#Generator.not_sql">not_sql</a></dd>
<dd id="Presto.Generator.alias_sql" class="function"><a href="../generator.html#Generator.alias_sql">alias_sql</a></dd>
<dd id="Presto.Generator.pivotalias_sql" class="function"><a href="../generator.html#Generator.pivotalias_sql">pivotalias_sql</a></dd>
<dd id="Presto.Generator.aliases_sql" class="function"><a href="../generator.html#Generator.aliases_sql">aliases_sql</a></dd>
<dd id="Presto.Generator.atindex_sql" class="function"><a href="../generator.html#Generator.atindex_sql">atindex_sql</a></dd>
<dd id="Presto.Generator.attimezone_sql" class="function"><a href="../generator.html#Generator.attimezone_sql">attimezone_sql</a></dd>
<dd id="Presto.Generator.fromtimezone_sql" class="function"><a href="../generator.html#Generator.fromtimezone_sql">fromtimezone_sql</a></dd>
<dd id="Presto.Generator.add_sql" class="function"><a href="../generator.html#Generator.add_sql">add_sql</a></dd>
<dd id="Presto.Generator.and_sql" class="function"><a href="../generator.html#Generator.and_sql">and_sql</a></dd>
<dd id="Presto.Generator.or_sql" class="function"><a href="../generator.html#Generator.or_sql">or_sql</a></dd>
<dd id="Presto.Generator.xor_sql" class="function"><a href="../generator.html#Generator.xor_sql">xor_sql</a></dd>
<dd id="Presto.Generator.connector_sql" class="function"><a href="../generator.html#Generator.connector_sql">connector_sql</a></dd>
<dd id="Presto.Generator.bitwiseand_sql" class="function"><a href="../generator.html#Generator.bitwiseand_sql">bitwiseand_sql</a></dd>
<dd id="Presto.Generator.bitwiseleftshift_sql" class="function"><a href="../generator.html#Generator.bitwiseleftshift_sql">bitwiseleftshift_sql</a></dd>
<dd id="Presto.Generator.bitwisenot_sql" class="function"><a href="../generator.html#Generator.bitwisenot_sql">bitwisenot_sql</a></dd>
<dd id="Presto.Generator.bitwiseor_sql" class="function"><a href="../generator.html#Generator.bitwiseor_sql">bitwiseor_sql</a></dd>
<dd id="Presto.Generator.bitwiserightshift_sql" class="function"><a href="../generator.html#Generator.bitwiserightshift_sql">bitwiserightshift_sql</a></dd>
<dd id="Presto.Generator.bitwisexor_sql" class="function"><a href="../generator.html#Generator.bitwisexor_sql">bitwisexor_sql</a></dd>
<dd id="Presto.Generator.cast_sql" class="function"><a href="../generator.html#Generator.cast_sql">cast_sql</a></dd>
<dd id="Presto.Generator.currentdate_sql" class="function"><a href="../generator.html#Generator.currentdate_sql">currentdate_sql</a></dd>
<dd id="Presto.Generator.collate_sql" class="function"><a href="../generator.html#Generator.collate_sql">collate_sql</a></dd>
<dd id="Presto.Generator.command_sql" class="function"><a href="../generator.html#Generator.command_sql">command_sql</a></dd>
<dd id="Presto.Generator.comment_sql" class="function"><a href="../generator.html#Generator.comment_sql">comment_sql</a></dd>
<dd id="Presto.Generator.mergetreettlaction_sql" class="function"><a href="../generator.html#Generator.mergetreettlaction_sql">mergetreettlaction_sql</a></dd>
<dd id="Presto.Generator.mergetreettl_sql" class="function"><a href="../generator.html#Generator.mergetreettl_sql">mergetreettl_sql</a></dd>
<dd id="Presto.Generator.commit_sql" class="function"><a href="../generator.html#Generator.commit_sql">commit_sql</a></dd>
<dd id="Presto.Generator.rollback_sql" class="function"><a href="../generator.html#Generator.rollback_sql">rollback_sql</a></dd>
<dd id="Presto.Generator.altercolumn_sql" class="function"><a href="../generator.html#Generator.altercolumn_sql">altercolumn_sql</a></dd>
<dd id="Presto.Generator.alterdiststyle_sql" class="function"><a href="../generator.html#Generator.alterdiststyle_sql">alterdiststyle_sql</a></dd>
<dd id="Presto.Generator.altersortkey_sql" class="function"><a href="../generator.html#Generator.altersortkey_sql">altersortkey_sql</a></dd>
<dd id="Presto.Generator.renametable_sql" class="function"><a href="../generator.html#Generator.renametable_sql">renametable_sql</a></dd>
<dd id="Presto.Generator.renamecolumn_sql" class="function"><a href="../generator.html#Generator.renamecolumn_sql">renamecolumn_sql</a></dd>
<dd id="Presto.Generator.alterset_sql" class="function"><a href="../generator.html#Generator.alterset_sql">alterset_sql</a></dd>
<dd id="Presto.Generator.alter_sql" class="function"><a href="../generator.html#Generator.alter_sql">alter_sql</a></dd>
<dd id="Presto.Generator.add_column_sql" class="function"><a href="../generator.html#Generator.add_column_sql">add_column_sql</a></dd>
<dd id="Presto.Generator.droppartition_sql" class="function"><a href="../generator.html#Generator.droppartition_sql">droppartition_sql</a></dd>
<dd id="Presto.Generator.addconstraint_sql" class="function"><a href="../generator.html#Generator.addconstraint_sql">addconstraint_sql</a></dd>
<dd id="Presto.Generator.distinct_sql" class="function"><a href="../generator.html#Generator.distinct_sql">distinct_sql</a></dd>
<dd id="Presto.Generator.ignorenulls_sql" class="function"><a href="../generator.html#Generator.ignorenulls_sql">ignorenulls_sql</a></dd>
<dd id="Presto.Generator.respectnulls_sql" class="function"><a href="../generator.html#Generator.respectnulls_sql">respectnulls_sql</a></dd>
<dd id="Presto.Generator.havingmax_sql" class="function"><a href="../generator.html#Generator.havingmax_sql">havingmax_sql</a></dd>
<dd id="Presto.Generator.intdiv_sql" class="function"><a href="../generator.html#Generator.intdiv_sql">intdiv_sql</a></dd>
<dd id="Presto.Generator.dpipe_sql" class="function"><a href="../generator.html#Generator.dpipe_sql">dpipe_sql</a></dd>
<dd id="Presto.Generator.div_sql" class="function"><a href="../generator.html#Generator.div_sql">div_sql</a></dd>
<dd id="Presto.Generator.overlaps_sql" class="function"><a href="../generator.html#Generator.overlaps_sql">overlaps_sql</a></dd>
<dd id="Presto.Generator.distance_sql" class="function"><a href="../generator.html#Generator.distance_sql">distance_sql</a></dd>
<dd id="Presto.Generator.dot_sql" class="function"><a href="../generator.html#Generator.dot_sql">dot_sql</a></dd>
<dd id="Presto.Generator.eq_sql" class="function"><a href="../generator.html#Generator.eq_sql">eq_sql</a></dd>
<dd id="Presto.Generator.propertyeq_sql" class="function"><a href="../generator.html#Generator.propertyeq_sql">propertyeq_sql</a></dd>
<dd id="Presto.Generator.escape_sql" class="function"><a href="../generator.html#Generator.escape_sql">escape_sql</a></dd>
<dd id="Presto.Generator.glob_sql" class="function"><a href="../generator.html#Generator.glob_sql">glob_sql</a></dd>
<dd id="Presto.Generator.gt_sql" class="function"><a href="../generator.html#Generator.gt_sql">gt_sql</a></dd>
<dd id="Presto.Generator.gte_sql" class="function"><a href="../generator.html#Generator.gte_sql">gte_sql</a></dd>
<dd id="Presto.Generator.ilike_sql" class="function"><a href="../generator.html#Generator.ilike_sql">ilike_sql</a></dd>
<dd id="Presto.Generator.ilikeany_sql" class="function"><a href="../generator.html#Generator.ilikeany_sql">ilikeany_sql</a></dd>
<dd id="Presto.Generator.is_sql" class="function"><a href="../generator.html#Generator.is_sql">is_sql</a></dd>
<dd id="Presto.Generator.like_sql" class="function"><a href="../generator.html#Generator.like_sql">like_sql</a></dd>
<dd id="Presto.Generator.likeany_sql" class="function"><a href="../generator.html#Generator.likeany_sql">likeany_sql</a></dd>
<dd id="Presto.Generator.similarto_sql" class="function"><a href="../generator.html#Generator.similarto_sql">similarto_sql</a></dd>
<dd id="Presto.Generator.lt_sql" class="function"><a href="../generator.html#Generator.lt_sql">lt_sql</a></dd>
<dd id="Presto.Generator.lte_sql" class="function"><a href="../generator.html#Generator.lte_sql">lte_sql</a></dd>
<dd id="Presto.Generator.mod_sql" class="function"><a href="../generator.html#Generator.mod_sql">mod_sql</a></dd>
<dd id="Presto.Generator.mul_sql" class="function"><a href="../generator.html#Generator.mul_sql">mul_sql</a></dd>
<dd id="Presto.Generator.neq_sql" class="function"><a href="../generator.html#Generator.neq_sql">neq_sql</a></dd>
<dd id="Presto.Generator.nullsafeeq_sql" class="function"><a href="../generator.html#Generator.nullsafeeq_sql">nullsafeeq_sql</a></dd>
<dd id="Presto.Generator.nullsafeneq_sql" class="function"><a href="../generator.html#Generator.nullsafeneq_sql">nullsafeneq_sql</a></dd>
<dd id="Presto.Generator.slice_sql" class="function"><a href="../generator.html#Generator.slice_sql">slice_sql</a></dd>
<dd id="Presto.Generator.sub_sql" class="function"><a href="../generator.html#Generator.sub_sql">sub_sql</a></dd>
<dd id="Presto.Generator.trycast_sql" class="function"><a href="../generator.html#Generator.trycast_sql">trycast_sql</a></dd>
<dd id="Presto.Generator.try_sql" class="function"><a href="../generator.html#Generator.try_sql">try_sql</a></dd>
<dd id="Presto.Generator.log_sql" class="function"><a href="../generator.html#Generator.log_sql">log_sql</a></dd>
<dd id="Presto.Generator.use_sql" class="function"><a href="../generator.html#Generator.use_sql">use_sql</a></dd>
<dd id="Presto.Generator.binary" class="function"><a href="../generator.html#Generator.binary">binary</a></dd>
<dd id="Presto.Generator.function_fallback_sql" class="function"><a href="../generator.html#Generator.function_fallback_sql">function_fallback_sql</a></dd>
<dd id="Presto.Generator.func" class="function"><a href="../generator.html#Generator.func">func</a></dd>
<dd id="Presto.Generator.format_args" class="function"><a href="../generator.html#Generator.format_args">format_args</a></dd>
<dd id="Presto.Generator.too_wide" class="function"><a href="../generator.html#Generator.too_wide">too_wide</a></dd>
<dd id="Presto.Generator.format_time" class="function"><a href="../generator.html#Generator.format_time">format_time</a></dd>
<dd id="Presto.Generator.expressions" class="function"><a href="../generator.html#Generator.expressions">expressions</a></dd>
<dd id="Presto.Generator.op_expressions" class="function"><a href="../generator.html#Generator.op_expressions">op_expressions</a></dd>
<dd id="Presto.Generator.naked_property" class="function"><a href="../generator.html#Generator.naked_property">naked_property</a></dd>
<dd id="Presto.Generator.tag_sql" class="function"><a href="../generator.html#Generator.tag_sql">tag_sql</a></dd>
<dd id="Presto.Generator.token_sql" class="function"><a href="../generator.html#Generator.token_sql">token_sql</a></dd>
<dd id="Presto.Generator.userdefinedfunction_sql" class="function"><a href="../generator.html#Generator.userdefinedfunction_sql">userdefinedfunction_sql</a></dd>
<dd id="Presto.Generator.joinhint_sql" class="function"><a href="../generator.html#Generator.joinhint_sql">joinhint_sql</a></dd>
<dd id="Presto.Generator.kwarg_sql" class="function"><a href="../generator.html#Generator.kwarg_sql">kwarg_sql</a></dd>
<dd id="Presto.Generator.when_sql" class="function"><a href="../generator.html#Generator.when_sql">when_sql</a></dd>
<dd id="Presto.Generator.merge_sql" class="function"><a href="../generator.html#Generator.merge_sql">merge_sql</a></dd>
<dd id="Presto.Generator.tochar_sql" class="function"><a href="../generator.html#Generator.tochar_sql">tochar_sql</a></dd>
<dd id="Presto.Generator.tonumber_sql" class="function"><a href="../generator.html#Generator.tonumber_sql">tonumber_sql</a></dd>
<dd id="Presto.Generator.dictproperty_sql" class="function"><a href="../generator.html#Generator.dictproperty_sql">dictproperty_sql</a></dd>
<dd id="Presto.Generator.dictrange_sql" class="function"><a href="../generator.html#Generator.dictrange_sql">dictrange_sql</a></dd>
<dd id="Presto.Generator.dictsubproperty_sql" class="function"><a href="../generator.html#Generator.dictsubproperty_sql">dictsubproperty_sql</a></dd>
<dd id="Presto.Generator.duplicatekeyproperty_sql" class="function"><a href="../generator.html#Generator.duplicatekeyproperty_sql">duplicatekeyproperty_sql</a></dd>
<dd id="Presto.Generator.distributedbyproperty_sql" class="function"><a href="../generator.html#Generator.distributedbyproperty_sql">distributedbyproperty_sql</a></dd>
<dd id="Presto.Generator.oncluster_sql" class="function"><a href="../generator.html#Generator.oncluster_sql">oncluster_sql</a></dd>
<dd id="Presto.Generator.clusteredbyproperty_sql" class="function"><a href="../generator.html#Generator.clusteredbyproperty_sql">clusteredbyproperty_sql</a></dd>
<dd id="Presto.Generator.anyvalue_sql" class="function"><a href="../generator.html#Generator.anyvalue_sql">anyvalue_sql</a></dd>
<dd id="Presto.Generator.querytransform_sql" class="function"><a href="../generator.html#Generator.querytransform_sql">querytransform_sql</a></dd>
<dd id="Presto.Generator.indexconstraintoption_sql" class="function"><a href="../generator.html#Generator.indexconstraintoption_sql">indexconstraintoption_sql</a></dd>
<dd id="Presto.Generator.checkcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.checkcolumnconstraint_sql">checkcolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.indexcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.indexcolumnconstraint_sql">indexcolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.nvl2_sql" class="function"><a href="../generator.html#Generator.nvl2_sql">nvl2_sql</a></dd>
<dd id="Presto.Generator.comprehension_sql" class="function"><a href="../generator.html#Generator.comprehension_sql">comprehension_sql</a></dd>
<dd id="Presto.Generator.columnprefix_sql" class="function"><a href="../generator.html#Generator.columnprefix_sql">columnprefix_sql</a></dd>
<dd id="Presto.Generator.opclass_sql" class="function"><a href="../generator.html#Generator.opclass_sql">opclass_sql</a></dd>
<dd id="Presto.Generator.predict_sql" class="function"><a href="../generator.html#Generator.predict_sql">predict_sql</a></dd>
<dd id="Presto.Generator.forin_sql" class="function"><a href="../generator.html#Generator.forin_sql">forin_sql</a></dd>
<dd id="Presto.Generator.refresh_sql" class="function"><a href="../generator.html#Generator.refresh_sql">refresh_sql</a></dd>
<dd id="Presto.Generator.toarray_sql" class="function"><a href="../generator.html#Generator.toarray_sql">toarray_sql</a></dd>
<dd id="Presto.Generator.tsordstotime_sql" class="function"><a href="../generator.html#Generator.tsordstotime_sql">tsordstotime_sql</a></dd>
<dd id="Presto.Generator.tsordstotimestamp_sql" class="function"><a href="../generator.html#Generator.tsordstotimestamp_sql">tsordstotimestamp_sql</a></dd>
<dd id="Presto.Generator.tsordstodate_sql" class="function"><a href="../generator.html#Generator.tsordstodate_sql">tsordstodate_sql</a></dd>
<dd id="Presto.Generator.unixdate_sql" class="function"><a href="../generator.html#Generator.unixdate_sql">unixdate_sql</a></dd>
<dd id="Presto.Generator.lastday_sql" class="function"><a href="../generator.html#Generator.lastday_sql">lastday_sql</a></dd>
<dd id="Presto.Generator.dateadd_sql" class="function"><a href="../generator.html#Generator.dateadd_sql">dateadd_sql</a></dd>
<dd id="Presto.Generator.arrayany_sql" class="function"><a href="../generator.html#Generator.arrayany_sql">arrayany_sql</a></dd>
<dd id="Presto.Generator.partitionrange_sql" class="function"><a href="../generator.html#Generator.partitionrange_sql">partitionrange_sql</a></dd>
<dd id="Presto.Generator.truncatetable_sql" class="function"><a href="../generator.html#Generator.truncatetable_sql">truncatetable_sql</a></dd>
<dd id="Presto.Generator.convert_sql" class="function"><a href="../generator.html#Generator.convert_sql">convert_sql</a></dd>
<dd id="Presto.Generator.copyparameter_sql" class="function"><a href="../generator.html#Generator.copyparameter_sql">copyparameter_sql</a></dd>
<dd id="Presto.Generator.credentials_sql" class="function"><a href="../generator.html#Generator.credentials_sql">credentials_sql</a></dd>
<dd id="Presto.Generator.copy_sql" class="function"><a href="../generator.html#Generator.copy_sql">copy_sql</a></dd>
<dd id="Presto.Generator.semicolon_sql" class="function"><a href="../generator.html#Generator.semicolon_sql">semicolon_sql</a></dd>
<dd id="Presto.Generator.datadeletionproperty_sql" class="function"><a href="../generator.html#Generator.datadeletionproperty_sql">datadeletionproperty_sql</a></dd>
<dd id="Presto.Generator.maskingpolicycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.maskingpolicycolumnconstraint_sql">maskingpolicycolumnconstraint_sql</a></dd>
<dd id="Presto.Generator.gapfill_sql" class="function"><a href="../generator.html#Generator.gapfill_sql">gapfill_sql</a></dd>
<dd id="Presto.Generator.scope_resolution" class="function"><a href="../generator.html#Generator.scope_resolution">scope_resolution</a></dd>
<dd id="Presto.Generator.scoperesolution_sql" class="function"><a href="../generator.html#Generator.scoperesolution_sql">scoperesolution_sql</a></dd>
<dd id="Presto.Generator.parsejson_sql" class="function"><a href="../generator.html#Generator.parsejson_sql">parsejson_sql</a></dd>
<dd id="Presto.Generator.rand_sql" class="function"><a href="../generator.html#Generator.rand_sql">rand_sql</a></dd>
<dd id="Presto.Generator.changes_sql" class="function"><a href="../generator.html#Generator.changes_sql">changes_sql</a></dd>
<dd id="Presto.Generator.pad_sql" class="function"><a href="../generator.html#Generator.pad_sql">pad_sql</a></dd>
<dd id="Presto.Generator.summarize_sql" class="function"><a href="../generator.html#Generator.summarize_sql">summarize_sql</a></dd>
<dd id="Presto.Generator.explodinggenerateseries_sql" class="function"><a href="../generator.html#Generator.explodinggenerateseries_sql">explodinggenerateseries_sql</a></dd>
<dd id="Presto.Generator.arrayconcat_sql" class="function"><a href="../generator.html#Generator.arrayconcat_sql">arrayconcat_sql</a></dd>
<dd id="Presto.Generator.converttimezone_sql" class="function"><a href="../generator.html#Generator.converttimezone_sql">converttimezone_sql</a></dd>
<dd id="Presto.Generator.json_sql" class="function"><a href="../generator.html#Generator.json_sql">json_sql</a></dd>
<dd id="Presto.Generator.jsonvalue_sql" class="function"><a href="../generator.html#Generator.jsonvalue_sql">jsonvalue_sql</a></dd>
<dd id="Presto.Generator.conditionalinsert_sql" class="function"><a href="../generator.html#Generator.conditionalinsert_sql">conditionalinsert_sql</a></dd>
<dd id="Presto.Generator.multitableinserts_sql" class="function"><a href="../generator.html#Generator.multitableinserts_sql">multitableinserts_sql</a></dd>
<dd id="Presto.Generator.oncondition_sql" class="function"><a href="../generator.html#Generator.oncondition_sql">oncondition_sql</a></dd>
<dd id="Presto.Generator.jsonexists_sql" class="function"><a href="../generator.html#Generator.jsonexists_sql">jsonexists_sql</a></dd>
<dd id="Presto.Generator.arrayagg_sql" class="function"><a href="../generator.html#Generator.arrayagg_sql">arrayagg_sql</a></dd>
<dd id="Presto.Generator.apply_sql" class="function"><a href="../generator.html#Generator.apply_sql">apply_sql</a></dd>
<dd id="Presto.Generator.grant_sql" class="function"><a href="../generator.html#Generator.grant_sql">grant_sql</a></dd>
<dd id="Presto.Generator.grantprivilege_sql" class="function"><a href="../generator.html#Generator.grantprivilege_sql">grantprivilege_sql</a></dd>
<dd id="Presto.Generator.grantprincipal_sql" class="function"><a href="../generator.html#Generator.grantprincipal_sql">grantprincipal_sql</a></dd>
<dd id="Presto.Generator.columns_sql" class="function"><a href="../generator.html#Generator.columns_sql">columns_sql</a></dd>
<dd id="Presto.Generator.overlay_sql" class="function"><a href="../generator.html#Generator.overlay_sql">overlay_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>